--- LuceneQueryFactory.java 2018-12-14 14:13:01.875691700 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\LuceneQueryFactory.java 2015-04-03 11:55:37.796500400 +0200
@@ -146,13 +146,6 @@
private final PerQueryCache cache = new PerQueryCache();
-
- /**
- * The excerpt provider or null if none was created yet.
- */
- private ExcerptProvider excerptProvider;
-
-
/**
* Creates a new lucene query factory.
*
@@ -231,7 +224,7 @@
while (node != null) {
Row row = null;
try {
- row = new SelectorRow(session.getValueFactory(), getExcerptProvider(query), columns, evaluator,
+ row = new SelectorRow(columns, evaluator,
selector.getSelectorName(),
session.getNodeById(node.getNodeId()),
node.getScore());
@@ -267,26 +260,6 @@
}
}
-
-
- ExcerptProvider getExcerptProvider(Query query) {
-
- if (excerptProvider == null) {
- try {
- excerptProvider = index.createExcerptProvider(query);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return excerptProvider;
-
- }
-
-
-
-
-
/**
* Creates a lucene query for the given QOM selector.
*
--- AbstractRow.java 2018-12-14 16:25:25.272152200 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\AbstractRow.java 2015-04-03 11:55:39.512522400 +0200
@@ -16,49 +16,28 @@
*/
package org.apache.jackrabbit.core.query.lucene.join;
-import java.io.IOException;
import java.util.Map;
import javax.jcr.ItemNotFoundException;
import javax.jcr.Node;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.qom.Operand;
import javax.jcr.query.qom.PropertyValue;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
-import org.apache.jackrabbit.core.query.lucene.HighlightingExcerptProvider;
-import org.apache.jackrabbit.util.ISO9075;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
abstract class AbstractRow implements Row {
-
- private static Logger log = LoggerFactory.getLogger(AbstractRow.class);
-
- private static final String EXCERPT_PREFIX = "rep:excerpt(";
-
private final Map columns;
private final OperandEvaluator evaluator;
- private ExcerptProvider excerptProvider;
-
-
- private ValueFactory valueFactory;
-
- protected AbstractRow(ValueFactory valueFactory, ExcerptProvider excerptProvider, Map columns, OperandEvaluator evaluator) {
+ protected AbstractRow(
+ Map columns, OperandEvaluator evaluator) {
this.columns = columns;
this.evaluator = evaluator;
- this.excerptProvider = excerptProvider;
- this.valueFactory = valueFactory;
}
public Value[] getValues() throws RepositoryException {
@@ -70,149 +49,17 @@
return values;
}
- public Value getValue(String columnName) throws ItemNotFoundException, RepositoryException {
+ public Value getValue(String columnName)
+ throws ItemNotFoundException, RepositoryException {
Operand operand = columns.get(columnName);
if (operand != null) {
return evaluator.getValue(operand, this);
} else {
- if (isExcerptFunction(columnName)) {
- // excerpt function with parameter
- return getExcerpt(columnName);
- } else {
- throw new ItemNotFoundException("Column " + columnName + " is not included in this row");
- }
+ throw new ItemNotFoundException(
+ "Column " + columnName + " is not included in this row");
}
}
-
- /**
- * @param name
- * a String.
- * @return true if name is the rep:excerpt function, false otherwise.
- */
- private boolean isExcerptFunction(String name) {
- return name.startsWith(EXCERPT_PREFIX);
- }
-
- /**
- * Returns an excerpt for the node indicated by the relative path
- * parameter of the rep:excerpt function. The relative path is resolved
- * against the node associated with this row.
- *
- * @param excerptCall the rep:excerpt function with the parameter as
- * string.
- * @return a StringValue or null if the excerpt cannot be
- * created or an error occurs.
- * @throws RepositoryException if the function call is not well-formed.
- */
- private Value getExcerpt(String excerptCall) throws RepositoryException {
- int idx = excerptCall.indexOf(EXCERPT_PREFIX);
- int end = excerptCall.lastIndexOf(')');
- if (end == -1) {
- throw new RepositoryException("Missing right parenthesis");
- }
- String pathStr = excerptCall.substring(idx + EXCERPT_PREFIX.length(), end).trim();
- String decodedPath = ISO9075.decode(pathStr);
-
- // get node of selector
- Node n = null;
- try {
- n = getNode(decodedPath);
- }catch (RepositoryException e) {
- // bad selector name
- }
- if (n != null) {
- NodeId id = new NodeId(n.getIdentifier());
- return createExcerpt(id);
- }else {
- // does not exist or references a property
- try {
- String sel;
- String name;
- idx = decodedPath.indexOf('.');
- if (idx >= 0) {
- sel = decodedPath.substring(0, idx);
- name = decodedPath.substring(idx+1);
- }else {
- sel = null;
- name = decodedPath;
- }
-
- n = sel != null ? getNode(sel) : getNode();
- Property p = n.getProperty(name);
- // JFM 20170505 : traitement des propriétés multivaluées
- if (p.isMultiple()) {
- StringBuilder text = new StringBuilder();
- Value[] values1 = p.getValues();
- for (Value value : values1) {
- text.append(value.getString());
- text.append(' ');
- }
- return highlight(text.toString());
- }else{
- return highlight(p.getValue().getString());
- }
- } catch (PathNotFoundException e1) {
- // does not exist
- return null;
- }
- }
-
-
-
- }
-
- /**
- * Creates an excerpt for node with the given id.
- *
- * @param id
- * a node id.
- * @return a StringValue or null if the excerpt cannot be created or an error occurs.
- */
- private Value createExcerpt(NodeId id) {
- if (excerptProvider == null) {
- return null;
- }
- try {
- long time = System.currentTimeMillis();
- String excerpt = excerptProvider.getExcerpt(id, 3, 150);
- time = System.currentTimeMillis() - time;
- log.debug("Created excerpt in {} ms.", time);
- if (excerpt != null) {
- return valueFactory.createValue(excerpt);
- } else {
- return null;
- }
- } catch (IOException e) {
- return null;
- }
- }
-
- /**
- * Highlights the matching terms in the passed text.
- *
- * @param text the text where to apply highlighting.
- * @return a StringValue or null if highlighting fails.
- */
- private Value highlight(String text) {
- if (!(excerptProvider instanceof HighlightingExcerptProvider)) {
- return null;
- }
- HighlightingExcerptProvider hep =
- (HighlightingExcerptProvider) excerptProvider;
- try {
- long time = System.currentTimeMillis();
- text = hep.highlight(text);
- time = System.currentTimeMillis() - time;
- log.debug("Highlighted text in {} ms.", time);
- return valueFactory.createValue(text);
- } catch (IOException e) {
- return null;
- }
- }
-
-
-
public String getPath() throws RepositoryException {
Node node = getNode();
if (node != null) {
--- ChildNodeJoinMerger.java 2018-12-14 11:32:16.648350000 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\ChildNodeJoinMerger.java 2015-04-03 11:55:46.629213900 +0200
@@ -26,7 +26,6 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.qom.ChildNodeJoinCondition;
import javax.jcr.query.qom.Constraint;
@@ -35,7 +34,6 @@
import javax.jcr.query.qom.QueryObjectModelFactory;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
class ChildNodeJoinMerger extends JoinMerger {
@@ -43,12 +41,12 @@
private final String parentSelector;
- public ChildNodeJoinMerger(ValueFactory valueFactory, ExcerptProvider excerptProvider,
+ public ChildNodeJoinMerger(
Join join, Map columns,
OperandEvaluator evaluator, QueryObjectModelFactory factory,
ChildNodeJoinCondition condition)
throws RepositoryException {
- super(valueFactory, excerptProvider, join, columns, evaluator, factory);
+ super(join, columns, evaluator, factory);
this.childSelector = condition.getChildSelectorName();
this.parentSelector = condition.getParentSelectorName();
}
--- DescendantNodeJoinMerger.java 2018-12-14 11:33:02.039931500 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\DescendantNodeJoinMerger.java 2015-04-03 11:55:39.653924300 +0200
@@ -26,7 +26,6 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.qom.Constraint;
import javax.jcr.query.qom.DescendantNodeJoinCondition;
@@ -35,7 +34,6 @@
import javax.jcr.query.qom.QueryObjectModelFactory;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
class DescendantNodeJoinMerger extends JoinMerger {
@@ -43,12 +41,12 @@
private final String ancestorSelector;
- public DescendantNodeJoinMerger(ValueFactory valueFactory, ExcerptProvider excerptProvider,
+ public DescendantNodeJoinMerger(
Join join, Map columns,
OperandEvaluator evaluator, QueryObjectModelFactory factory,
DescendantNodeJoinCondition condition)
throws RepositoryException {
- super(valueFactory, excerptProvider, join, columns, evaluator, factory);
+ super(join, columns, evaluator, factory);
this.descendantSelector = condition.getDescendantSelectorName();
this.ancestorSelector = condition.getAncestorSelectorName();
}
--- EquiJoinMerger.java 2018-12-14 11:28:57.172591700 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\EquiJoinMerger.java 2015-04-03 11:55:38.654511400 +0200
@@ -28,7 +28,6 @@
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.qom.Constraint;
import javax.jcr.query.qom.EquiJoinCondition;
@@ -38,7 +37,6 @@
import javax.jcr.query.qom.QueryObjectModelFactory;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
class EquiJoinMerger extends JoinMerger {
@@ -46,11 +44,11 @@
private final PropertyValue rightProperty;
- public EquiJoinMerger(ValueFactory valueFactory, ExcerptProvider excerptProvider,
+ public EquiJoinMerger(
Join join, Map columns,
OperandEvaluator evaluator, QueryObjectModelFactory factory,
EquiJoinCondition condition) throws RepositoryException {
- super(valueFactory, excerptProvider, join, columns, evaluator, factory);
+ super(join, columns, evaluator, factory);
PropertyValue property1 = factory.propertyValue(
condition.getSelector1Name(), condition.getProperty1Name());
--- JoinMerger.java 2018-12-14 11:30:23.977658100 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\JoinMerger.java 2015-04-03 11:55:39.701725000 +0200
@@ -31,7 +31,6 @@
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.ValueFactory;
import javax.jcr.query.QueryResult;
import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
@@ -50,7 +49,6 @@
import org.apache.jackrabbit.commons.iterator.RowIterable;
import org.apache.jackrabbit.commons.iterator.RowIteratorAdapter;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
/**
* A join merger is used by the {@link QueryEngine} class to efficiently
@@ -74,26 +72,26 @@
* @return join merger
* @throws RepositoryException if the merger can not be created
*/
- public static JoinMerger getJoinMerger(ValueFactory valueFactory, ExcerptProvider excerptProvider,
+ public static JoinMerger getJoinMerger(
Join join, Map columns,
OperandEvaluator evaluator, QueryObjectModelFactory factory)
throws RepositoryException {
JoinCondition condition = join.getJoinCondition();
if (condition instanceof EquiJoinCondition) {
return new EquiJoinMerger(
- valueFactory, excerptProvider, join, columns, evaluator, factory,
+ join, columns, evaluator, factory,
(EquiJoinCondition) condition);
} else if (condition instanceof SameNodeJoinCondition) {
return new SameNodeJoinMerger(
- valueFactory, excerptProvider, join, columns, evaluator, factory,
+ join, columns, evaluator, factory,
(SameNodeJoinCondition) condition);
} else if (condition instanceof ChildNodeJoinCondition) {
return new ChildNodeJoinMerger(
- valueFactory, excerptProvider, join, columns, evaluator, factory,
+ join, columns, evaluator, factory,
(ChildNodeJoinCondition) condition);
} else if (condition instanceof DescendantNodeJoinCondition) {
return new DescendantNodeJoinMerger(
- valueFactory, excerptProvider, join, columns, evaluator, factory,
+ join, columns, evaluator, factory,
(DescendantNodeJoinCondition) condition);
} else {
throw new UnsupportedRepositoryOperationException(
@@ -117,11 +115,7 @@
protected final QueryObjectModelFactory factory;
- protected final ValueFactory valueFactory;
-
- protected final ExcerptProvider excerptProvider;
-
- protected JoinMerger(ValueFactory valueFactory, ExcerptProvider excerptProvider,
+ protected JoinMerger(
Join join, Map columns,
OperandEvaluator evaluator, QueryObjectModelFactory factory)
throws RepositoryException {
@@ -142,8 +136,6 @@
this.evaluator = evaluator;
this.factory = factory;
- this.valueFactory = valueFactory;
- this.excerptProvider = excerptProvider;
}
public String[] getColumnNames(){
@@ -312,10 +304,8 @@
* @return joined row
*/
private Row mergeRow(Row left, Row right) {
-
-
return new JoinRow(
- valueFactory, excerptProvider, columns, evaluator,
+ columns, evaluator,
left, leftSelectors, right, rightSelectors);
}
--- JoinRow.java 2018-12-14 14:15:22.418356600 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\JoinRow.java 2015-04-03 11:55:47.190821100 +0200
@@ -21,12 +21,10 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.qom.PropertyValue;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
public class JoinRow extends AbstractRow {
@@ -39,10 +37,10 @@
private final Set rightSelectors;
public JoinRow(
- ValueFactory valueFactory, ExcerptProvider excerptProvider, Map columns, OperandEvaluator evaluator,
+ Map columns, OperandEvaluator evaluator,
Row leftRow, Set leftSelectors,
Row rightRow, Set rightSelectors) {
- super(valueFactory, excerptProvider, columns, evaluator);
+ super(columns, evaluator);
this.leftRow = leftRow;
this.leftSelectors = leftSelectors;
this.rightRow = rightRow;
--- SameNodeJoinMerger.java 2018-12-14 11:31:14.321662000 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\SameNodeJoinMerger.java 2015-04-03 11:55:46.598013500 +0200
@@ -27,7 +27,6 @@
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.qom.Constraint;
import javax.jcr.query.qom.Join;
@@ -36,7 +35,6 @@
import javax.jcr.query.qom.SameNodeJoinCondition;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
class SameNodeJoinMerger extends JoinMerger {
@@ -46,11 +44,11 @@
private final String path;
- public SameNodeJoinMerger(ValueFactory valueFactory, ExcerptProvider excerptProvider,
+ public SameNodeJoinMerger(
Join join, Map columns,
OperandEvaluator evaluator, QueryObjectModelFactory factory,
SameNodeJoinCondition condition) throws RepositoryException {
- super(valueFactory, excerptProvider, join, columns, evaluator, factory);
+ super(join, columns, evaluator, factory);
this.selector1 = condition.getSelector1Name();
this.selector2 = condition.getSelector2Name();
this.path = condition.getSelector2Path();
--- SelectorRow.java 2018-12-14 10:58:51.257676600 +0100
+++ d:\download\java\jackrabbit\2.10.0\jackrabbit-core\src\main\java\org\apache\jackrabbit\core\query\lucene\join\SelectorRow.java 2015-04-03 11:55:39.717325200 +0200
@@ -20,11 +20,9 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
import javax.jcr.query.qom.PropertyValue;
import org.apache.jackrabbit.commons.query.qom.OperandEvaluator;
-import org.apache.jackrabbit.core.query.lucene.ExcerptProvider;
/**
* A row implementation for a query with just a single selector.
@@ -38,9 +36,9 @@
private final double score;
public SelectorRow(
- ValueFactory valueFactory, ExcerptProvider excerptProvider, Map columns, OperandEvaluator evaluator,
+ Map columns, OperandEvaluator evaluator,
String selector, Node node, double score) {
- super(valueFactory, excerptProvider, columns, evaluator);
+ super(columns, evaluator);
this.selector = selector;
this.node = node;
this.score = score;