Author: catholicon
Date: Thu Dec  3 14:05:19 2015
New Revision: 1717769

URL: http://svn.apache.org/viewvc?rev=1717769&view=rev
Log:
OAK-3552 Expose Lucene search score explanation
Use property restriction on filter to check if rep:excerpt or 
oak:scoreExplanation need to be evaluated

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java?rev=1717769&r1=1717768&r2=1717769&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
 Thu Dec  3 14:05:19 2015
@@ -389,8 +389,9 @@ public class SelectorImpl extends Source
         // we will need the excerpt
         for (ColumnImpl c : query.getColumns()) {
             if (c.getSelector().equals(this)) {
-                if (c.getColumnName().equals("rep:excerpt")) {
-                    f.restrictProperty("rep:excerpt", Operator.NOT_EQUAL, 
null);
+                String columnName = c.getColumnName();
+                if (columnName.equals(QueryImpl.REP_EXCERPT) || 
columnName.equals(QueryImpl.OAK_SCORE_EXPLANATION)) {
+                    f.restrictProperty(columnName, Operator.NOT_EQUAL, null);
                 }
             }
         }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java?rev=1717769&r1=1717768&r2=1717769&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
 Thu Dec  3 14:05:19 2015
@@ -367,7 +367,8 @@ public class LuceneIndex implements Adva
                             LOG.debug("... took {} ms", time);
                             nextBatchSize = (int) Math.min(nextBatchSize * 2L, 
100000);
 
-                            boolean addExcerpt = filter.getQueryStatement() != 
null && filter.getQueryStatement().contains(QueryImpl.REP_EXCERPT);
+                            PropertyRestriction restriction = 
filter.getPropertyRestriction(QueryImpl.REP_EXCERPT);
+                            boolean addExcerpt = restriction != null && 
restriction.isNotNullRestriction();
                             for (ScoreDoc doc : docs.scoreDocs) {
                                 String excerpt = null;
                                 if (addExcerpt) {
@@ -698,7 +699,7 @@ public class LuceneIndex implements Adva
             }
 
             String name = pr.propertyName;
-            if ("rep:excerpt".equals(name)) {
+            if (QueryImpl.REP_EXCERPT.equals(name)) {
                 continue;
             }
             if (JCR_PRIMARYTYPE.equals(name)) {

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=1717769&r1=1717768&r2=1717769&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
 Thu Dec  3 14:05:19 2015
@@ -383,9 +383,11 @@ public class LucenePropertyIndex impleme
                             PERF_LOGGER.end(start, -1, "{} ...", 
docs.scoreDocs.length);
                             nextBatchSize = (int) Math.min(nextBatchSize * 2L, 
100000);
 
-                            String queryStatement = filter.getQueryStatement();
-                            boolean addExcerpt = queryStatement != null && 
queryStatement.contains(QueryImpl.REP_EXCERPT);
-                            boolean addExplain = queryStatement != null && 
queryStatement.contains(QueryImpl.OAK_SCORE_EXPLANATION);
+                            PropertyRestriction restriction = 
filter.getPropertyRestriction(QueryImpl.REP_EXCERPT);
+                            boolean addExcerpt = restriction != null && 
restriction.isNotNullRestriction();
+
+                            restriction = 
filter.getPropertyRestriction(QueryImpl.OAK_SCORE_EXPLANATION);
+                            boolean addExplain = restriction != null && 
restriction.isNotNullRestriction();
 
                             for (ScoreDoc doc : docs.scoreDocs) {
                                 String excerpt = null;
@@ -840,7 +842,7 @@ public class LucenePropertyIndex impleme
         for (PropertyRestriction pr : filter.getPropertyRestrictions()) {
             String name = pr.propertyName;
 
-            if ("rep:excerpt".equals(name)) {
+            if (QueryImpl.REP_EXCERPT.equals(name) || 
QueryImpl.OAK_SCORE_EXPLANATION.equals(name)) {
                 continue;
             }
 


Reply via email to