--- LuceneQueryFactory.java 2018-12-18 17:31:10.096232600 +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
@@ -49,7 +49,6 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -147,13 +146,6 @@
private final PerQueryCache cache = new PerQueryCache();
-
- /**
- * The excerpt provider or null if none was created yet.
- */
- private Map excerptProviders = new HashMap();
-
-
/**
* Creates a new lucene query factory.
*
@@ -232,7 +224,7 @@
while (node != null) {
Row row = null;
try {
- row = new SelectorRow(session.getValueFactory(), getExcerptProvider(selector.getSelectorName(), qp.mainQuery), columns, evaluator,
+ row = new SelectorRow(columns, evaluator,
selector.getSelectorName(),
session.getNodeById(node.getNodeId()),
node.getScore());
@@ -268,26 +260,6 @@
}
}
-
-
- ExcerptProvider getExcerptProvider(String selectorName, Query query) {
-
- ExcerptProvider excerptProvider;
- if ((excerptProvider=excerptProviders.get(selectorName)) == null) {
- try {
- excerptProvider = index.createExcerptProvider(query);
- excerptProviders.put(selectorName, excerptProvider);
- } catch (IOException e) {
- }
- }
- return excerptProvider;
-
- }
-
-
-
-
-
/**
* Creates a lucene query for the given QOM selector.
*
--- join\AbstractRow.java 2018-12-18 11:52:00.948549500 +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,39 +16,26 @@
*/
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;
- protected AbstractRow(Map columns, OperandEvaluator evaluator) {
+ protected AbstractRow(
+ Map columns, OperandEvaluator evaluator) {
this.columns = columns;
this.evaluator = evaluator;
}
@@ -62,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");
- }
- }
- }
-
- /**
- * @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(decodedPath, 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;
- }
- if (sel == null)
- return null;
-
- n = getNode(sel);
- 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(sel, text.toString());
- } else {
- return highlight(sel, 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(String selector, NodeId id) {
- try {
- if (getExcerptProvider(selector) == null) {
- return null;
- }
- long time = System.currentTimeMillis();
- String excerpt = getExcerptProvider(selector).getExcerpt(id, 3, 150);
- time = System.currentTimeMillis() - time;
- log.debug("Created excerpt in {} ms.", time);
- if (excerpt != null) {
- return getValueFactory(selector).createValue(excerpt);
- } else {
- return null;
- }
- } catch (IOException | RepositoryException e) {
- return null;
+ throw new ItemNotFoundException(
+ "Column " + columnName + " is not included in this row");
}
}
- /**
- * 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 selector, String text) {
- try {
- if (!(getExcerptProvider(selector) instanceof HighlightingExcerptProvider)) {
- return null;
- }
- HighlightingExcerptProvider hep = (HighlightingExcerptProvider) getExcerptProvider(selector);
- long time = System.currentTimeMillis();
- text = hep.highlight(text);
- time = System.currentTimeMillis() - time;
- log.debug("Highlighted text in {} ms.", time);
- return getValueFactory(selector).createValue(text);
- } catch (IOException | RepositoryException e) {
- return null;
- }
- }
-
- public abstract ExcerptProvider getExcerptProvider(String selector) throws RepositoryException;
-
- public abstract ValueFactory getValueFactory(String selector) throws RepositoryException;
-
public String getPath() throws RepositoryException {
Node node = getNode();
if (node != null) {
--- join\JoinRow.java 2018-12-18 11:50:48.481141000 +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 {
@@ -119,24 +117,4 @@
return builder.toString();
}
- @Override
- public ExcerptProvider getExcerptProvider(String selectorName) throws RepositoryException {
- Row row = getRow(selectorName);
- if (row != null) {
- return ((AbstractRow) row).getExcerptProvider(selectorName);
- } else {
- return null;
- }
- }
-
- @Override
- public ValueFactory getValueFactory(String selectorName) throws RepositoryException {
- Row row = getRow(selectorName);
- if (row != null) {
- return ((AbstractRow) row).getValueFactory(selectorName);
- } else {
- return null;
- }
- }
-
}
--- join\SelectorRow.java 2018-12-18 11:46:28.472471100 +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.
@@ -36,22 +34,14 @@
private final Node node;
private final double score;
-
- private final ExcerptProvider excerptProvider;
-
- private final ValueFactory valueFactory;
-
-
public SelectorRow(
- ValueFactory valueFactory, ExcerptProvider excerptProvider, Map columns, OperandEvaluator evaluator,
+ Map columns, OperandEvaluator evaluator,
String selector, Node node, double score) {
super(columns, evaluator);
this.selector = selector;
this.node = node;
this.score = score;
- this.valueFactory = valueFactory;
- this.excerptProvider = excerptProvider;
}
public Node getNode() {
@@ -85,15 +75,4 @@
return "{ " + selector + ": " + node + " }";
}
- public ExcerptProvider getExcerptProvider(String selectorName) throws RepositoryException {
- checkSelectorName(selectorName);
- return excerptProvider;
- }
-
- public ValueFactory getValueFactory(String selectorName) throws RepositoryException {
- checkSelectorName(selectorName);
- return valueFactory;
- }
-
-
}