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;
}