You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ca...@apache.org on 2015/12/23 09:20:17 UTC
svn commit: r1721503 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/spi/
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/
Author: catholicon
Date: Wed Dec 23 08:20:17 2015
New Revision: 1721503
URL: http://svn.apache.org/viewvc?rev=1721503&view=rev
Log:
OAK-3576: Allow custom extension to augment indexed lucene documents
Update FulltextQueryTermsProvider#getQueryTerm to get NodeState of index definition being used to serve the query
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactory.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/spi/FulltextQueryTermsProvider.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactoryTest.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAugmentTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactory.java?rev=1721503&r1=1721502&r2=1721503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactory.java Wed Dec 23 08:20:17 2015
@@ -162,11 +162,11 @@ public class IndexAugmentorFactory {
}
@Override
- public Query getQueryTerm(final String text, final Analyzer analyzer) {
+ public Query getQueryTerm(final String text, final Analyzer analyzer, NodeState indexDefinition) {
List<Query> subQueries = Lists.newArrayList();
for (FulltextQueryTermsProvider fulltextQueryTermsProvider : providers) {
final long start = PERFLOG.start();
- Query subQuery = fulltextQueryTermsProvider.getQueryTerm(text, analyzer);
+ Query subQuery = fulltextQueryTermsProvider.getQueryTerm(text, analyzer, indexDefinition);
PERFLOG.end(start, 1, "fulltextQueryTermsProvider: {}, text: {}", fulltextQueryTermsProvider, text);
if (subQuery != null) {
subQueries.add(subQuery);
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java?rev=1721503&r1=1721502&r2=1721503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java Wed Dec 23 08:20:17 2015
@@ -825,10 +825,9 @@ public class LucenePropertyIndex impleme
}
private static FulltextQueryTermsProvider getIndexAgumentor(IndexPlan plan, IndexAugmentorFactory augmentorFactory) {
PlanResult planResult = getPlanResult(plan);
- IndexDefinition defn = planResult.indexDefinition;
- if (augmentorFactory != null && defn.getVersion().isAtLeast(IndexFormatVersion.V2)){
- return augmentorFactory.getFulltextQueryTermsProvider(getPlanResult(plan).indexingRule.getNodeTypeName());
+ if (augmentorFactory != null){
+ return augmentorFactory.getFulltextQueryTermsProvider(planResult.indexingRule.getNodeTypeName());
}
return null;
@@ -1234,7 +1233,7 @@ public class LucenePropertyIndex impleme
private boolean visitTerm(String propertyName, String text, String boost, boolean not) {
String p = getLuceneFieldName(propertyName, pr);
- Query q = tokenToQuery(text, p, pr.indexingRule, analyzer, augmentor);
+ Query q = tokenToQuery(text, p, pr, analyzer, augmentor);
if (q == null) {
return false;
}
@@ -1280,8 +1279,10 @@ public class LucenePropertyIndex impleme
return p;
}
- private static Query tokenToQuery(String text, String fieldName, IndexingRule indexingRule, Analyzer analyzer, FulltextQueryTermsProvider augmentor) {
+ private static Query tokenToQuery(String text, String fieldName, PlanResult pr, Analyzer analyzer,
+ FulltextQueryTermsProvider augmentor) {
Query ret;
+ IndexingRule indexingRule = pr.indexingRule;
//Expand the query on fulltext field
if (FieldNames.FULLTEXT.equals(fieldName) &&
!indexingRule.getNodeScopeAnalyzedProps().isEmpty()) {
@@ -1302,7 +1303,7 @@ public class LucenePropertyIndex impleme
//Augment query terms if available (as a 'SHOULD' clause)
if (augmentor != null && FieldNames.FULLTEXT.equals(fieldName)) {
- Query subQuery = augmentor.getQueryTerm(text, analyzer);
+ Query subQuery = augmentor.getQueryTerm(text, analyzer, pr.indexDefinition.getDefinitionNodeState());
if (subQuery != null) {
BooleanQuery query = new BooleanQuery();
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/spi/FulltextQueryTermsProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/spi/FulltextQueryTermsProvider.java?rev=1721503&r1=1721502&r2=1721503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/spi/FulltextQueryTermsProvider.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/spi/FulltextQueryTermsProvider.java Wed Dec 23 08:20:17 2015
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.plugins.index.lucene.spi;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.search.Query;
@@ -33,7 +34,7 @@ public interface FulltextQueryTermsProvi
*/
FulltextQueryTermsProvider DEFAULT = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
return null;
}
@@ -47,10 +48,11 @@ public interface FulltextQueryTermsProvi
* field.
* @param text full text term
* @param analyzer {@link Analyzer} being used while forming the query. Can be used to analyze text consistently.
+ * @param indexDefinition {@link NodeState} of index definition
* @return {@link Query} object to be OR'ed with query being prepared. {@code null}, if nothing is to be added.
*/
@CheckForNull
- Query getQueryTerm(String text, Analyzer analyzer);
+ Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition);
/**
* This method is used to find which node types are supported by the implementation. Based, on the index
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactoryTest.java?rev=1721503&r1=1721502&r2=1721503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexAugmentorFactoryTest.java Wed Dec 23 08:20:17 2015
@@ -111,7 +111,7 @@ public class IndexAugmentorFactoryTest {
void validateComposedQueryTerms(String type, String ... expected) {
FulltextQueryTermsProvider compositeQueryTermsProvider = indexAugmentorFactory.getFulltextQueryTermsProvider(type);
- Query q = compositeQueryTermsProvider.getQueryTerm(null, null);
+ Query q = compositeQueryTermsProvider.getQueryTerm(null, null, null);
if (q == null) {
assertEquals("No query terms generated for " + type + ".", 0, expected.length);
} else {
@@ -172,7 +172,7 @@ public class IndexAugmentorFactoryTest {
}
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
return id;
}
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAugmentTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAugmentTest.java?rev=1721503&r1=1721502&r2=1721503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAugmentTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAugmentTest.java Wed Dec 23 08:20:17 2015
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.api.ContentRepository;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
import org.apache.jackrabbit.oak.plugins.index.lucene.score.ScorerProviderFactory;
import org.apache.jackrabbit.oak.plugins.index.lucene.spi.FulltextQueryTermsProvider;
@@ -100,7 +101,7 @@ public class LuceneIndexAugmentTest exte
final String realSearchText = "bar";
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
assertEquals("Full text term passed to provider isn't same as the one passed in query",
testSearchText, text);
return new TermQuery(new Term(":fulltext", realSearchText));
@@ -237,7 +238,7 @@ public class LuceneIndexAugmentTest exte
//Set a very sad query augmentor
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
return null;
}
@@ -252,7 +253,7 @@ public class LuceneIndexAugmentTest exte
//Set query augmentor... with null query
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
return null;
}
@@ -267,7 +268,7 @@ public class LuceneIndexAugmentTest exte
//Set query augmentor... with some query
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
return new TermQuery(new Term("bar", "baz"));
}
@@ -353,7 +354,7 @@ public class LuceneIndexAugmentTest exte
final AtomicInteger queryingCounter = new AtomicInteger(0);
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
queryingCounter.set(1);
return null;
}
@@ -416,7 +417,7 @@ public class LuceneIndexAugmentTest exte
final AtomicInteger queryingCounter = new AtomicInteger(0);
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
queryingCounter.set(1);
return null;
}
@@ -483,7 +484,7 @@ public class LuceneIndexAugmentTest exte
final AtomicInteger queryingCounter = new AtomicInteger(0);
factory.fulltextQueryTermsProvider = new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
queryingCounter.set(1);
return null;
}
@@ -588,7 +589,7 @@ public class LuceneIndexAugmentTest exte
final AtomicInteger indexingCounter2 = new AtomicInteger(0);
factory.registerQueryTermsProvider(new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
indexingCounter1.set(1);
return null;
}
@@ -601,7 +602,7 @@ public class LuceneIndexAugmentTest exte
});
factory.registerQueryTermsProvider(new FulltextQueryTermsProvider() {
@Override
- public Query getQueryTerm(String text, Analyzer analyzer) {
+ public Query getQueryTerm(String text, Analyzer analyzer, NodeState indexDefinition) {
indexingCounter2.set(1);
return null;
}