You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/04/21 14:55:42 UTC
svn commit: r1675109 [2/2] - in /lucene/dev/trunk: lucene/
lucene/core/src/java/org/apache/lucene/search/
lucene/core/src/java/org/apache/lucene/search/payloads/
lucene/core/src/java/org/apache/lucene/search/similarities/
lucene/core/src/java/org/apach...
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java Tue Apr 21 12:55:41 2015
@@ -272,7 +272,6 @@ public class TestQueryRescorer extends L
assertTrue(s.contains("first pass score"));
assertTrue(s.contains("no second pass score"));
assertFalse(s.contains("= second pass score"));
- assertTrue(s.contains("NON-MATCH"));
assertEquals(hits2.scoreDocs[1].score, explain.getValue(), 0.0f);
r.close();
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java Tue Apr 21 12:55:41 2015
@@ -48,7 +48,7 @@ public class TestSimilarity extends Luce
@Override public float sloppyFreq(int distance) { return 2.0f; }
@Override public float idf(long docFreq, long numDocs) { return 1.0f; }
@Override public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics[] stats) {
- return new Explanation(1.0f, "Inexplicable");
+ return Explanation.match(1.0f, "Inexplicable");
}
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java Tue Apr 21 12:55:41 2015
@@ -101,7 +101,7 @@ public class TestSortRescorer extends Lu
// Confirm the explanation breaks out the individual
// sort fields:
- assertTrue(expl.contains("= sort field <int: \"popularity\">! value=20"));
+ assertTrue(expl, expl.contains("= sort field <int: \"popularity\">! value=20"));
// Confirm the explanation includes first pass details:
assertTrue(expl.contains("= first pass score"));
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java Tue Apr 21 12:55:41 2015
@@ -341,7 +341,7 @@ public class TestPayloadNearQuery extend
// idf used for phrase queries
@Override
public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics[] termStats) {
- return new Explanation(1.0f, "Inexplicable");
+ return Explanation.match(1.0f, "Inexplicable");
}
}
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java Tue Apr 21 12:55:41 2015
@@ -194,7 +194,7 @@ public class TestSimilarityBase extends
toTermStats(stats));
float score = sim.score(realStats, freq, docLen);
float explScore = sim.explain(
- realStats, 1, new Explanation(freq, "freq"), docLen).getValue();
+ realStats, 1, Explanation.match(freq, "freq"), docLen).getValue();
assertFalse("Score infinite: " + sim.toString(), Float.isInfinite(score));
assertFalse("Score NaN: " + sim.toString(), Float.isNaN(score));
assertTrue("Score negative: " + sim.toString(), score >= 0);
Modified: lucene/dev/trunk/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java (original)
+++ lucene/dev/trunk/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionRescorer.java Tue Apr 21 12:55:41 2015
@@ -18,6 +18,8 @@ package org.apache.lucene.expressions;
*/
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -57,7 +59,7 @@ class ExpressionRescorer extends SortRes
@Override
public Explanation explain(IndexSearcher searcher, Explanation firstPassExplanation, int docID) throws IOException {
- Explanation result = super.explain(searcher, firstPassExplanation, docID);
+ Explanation superExpl = super.explain(searcher, firstPassExplanation, docID);
List<LeafReaderContext> leaves = searcher.getIndexReader().leaves();
int subReader = ReaderUtil.subIndex(docID, leaves);
@@ -71,11 +73,12 @@ class ExpressionRescorer extends SortRes
context.put("scorer", fakeScorer);
+ List<Explanation> subs = new ArrayList<>(Arrays.asList(superExpl.getDetails()));
for(String variable : expression.variables) {
- result.addDetail(new Explanation((float) bindings.getValueSource(variable).getValues(context, readerContext).doubleVal(docIDInSegment),
+ subs.add(Explanation.match((float) bindings.getValueSource(variable).getValues(context, readerContext).doubleVal(docIDInSegment),
"variable \"" + variable + "\""));
}
- return result;
+ return Explanation.match(superExpl.getValue(), superExpl.getDescription(), subs);
}
}
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java Tue Apr 21 12:55:41 2015
@@ -17,13 +17,15 @@ package org.apache.lucene.search.join;
* limitations under the License.
*/
+import java.io.IOException;
+import java.util.Set;
+
import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.MultiDocValues;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
@@ -36,9 +38,6 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LongBitSet;
import org.apache.lucene.util.LongValues;
-import java.io.IOException;
-import java.util.Set;
-
final class GlobalOrdinalsQuery extends Query {
// All the ords of matching docs found with OrdinalsCollector.
@@ -121,10 +120,10 @@ final class GlobalOrdinalsQuery extends
int segmentOrd = values.getOrd(doc);
if (segmentOrd != -1) {
BytesRef joinValue = values.lookupOrd(segmentOrd);
- return new ComplexExplanation(true, queryNorm, "Score based on join value " + joinValue.utf8ToString());
+ return Explanation.match(queryNorm, "Score based on join value " + joinValue.utf8ToString());
}
}
- return new ComplexExplanation(false, 0.0f, "Not a match");
+ return Explanation.noMatch("Not a match");
}
@Override
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java Tue Apr 21 12:55:41 2015
@@ -17,13 +17,15 @@ package org.apache.lucene.search.join;
* limitations under the License.
*/
+import java.io.IOException;
+import java.util.Set;
+
import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.MultiDocValues;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
@@ -35,9 +37,6 @@ import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LongValues;
-import java.io.IOException;
-import java.util.Set;
-
final class GlobalOrdinalsWithScoreQuery extends Query {
private final GlobalOrdinalsWithScoreCollector collector;
@@ -126,10 +125,10 @@ final class GlobalOrdinalsWithScoreQuery
score = collector.score(segmentOrd);
}
BytesRef joinValue = values.lookupOrd(segmentOrd);
- return new ComplexExplanation(true, score, "Score based on join value " + joinValue.utf8ToString());
+ return Explanation.match(score, "Score based on join value " + joinValue.utf8ToString());
}
}
- return new ComplexExplanation(false, 0.0f, "Not a match");
+ return Explanation.noMatch("Not a match");
}
@Override
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java Tue Apr 21 12:55:41 2015
@@ -27,7 +27,6 @@ import org.apache.lucene.index.PostingsE
import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
@@ -137,12 +136,12 @@ class TermsIncludingScoreQuery extends Q
postingsEnum = segmentTermsEnum.postings(null, postingsEnum, PostingsEnum.NONE);
if (postingsEnum.advance(doc) == doc) {
final float score = TermsIncludingScoreQuery.this.scores[ords[i]];
- return new ComplexExplanation(true, score, "Score based on join value " + segmentTermsEnum.term().utf8ToString());
+ return Explanation.match(score, "Score based on join value " + segmentTermsEnum.term().utf8ToString());
}
}
}
}
- return new ComplexExplanation(false, 0.0f, "Not a match");
+ return Explanation.noMatch("Not a match");
}
@Override
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java Tue Apr 21 12:55:41 2015
@@ -17,11 +17,16 @@ package org.apache.lucene.search.join;
* limitations under the License.
*/
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.Set;
+
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
@@ -34,12 +39,6 @@ import org.apache.lucene.util.BitDocIdSe
import org.apache.lucene.util.BitSet;
import org.apache.lucene.util.Bits;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Set;
-
/**
* This query requires that you index
* children and parent docs as a single block, using the
@@ -190,7 +189,7 @@ public class ToParentBlockJoinQuery exte
if (scorer != null && scorer.advance(doc) == doc) {
return scorer.explain(context.docBase);
}
- return new ComplexExplanation(false, 0.0f, "Not a match");
+ return Explanation.noMatch("Not a match");
}
}
@@ -414,8 +413,7 @@ public class ToParentBlockJoinQuery exte
public Explanation explain(int docBase) throws IOException {
int start = docBase + prevParentDoc + 1; // +1 b/c prevParentDoc is previous parent doc
int end = docBase + parentDoc - 1; // -1 b/c parentDoc is parent doc
- return new ComplexExplanation(
- true, score(), String.format(Locale.ROOT, "Score based on child doc range from %d to %d", start, end)
+ return Explanation.match(score(), String.format(Locale.ROOT, "Score based on child doc range from %d to %d", start, end)
);
}
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java Tue Apr 21 12:55:41 2015
@@ -454,7 +454,7 @@ public class TestDiversifiedTopDocsColle
@Override
public Explanation explain(int doc, Explanation freq) {
- return new Explanation(Float.intBitsToFloat((int) values.get(doc)),
+ return Explanation.match(Float.intBitsToFloat((int) values.get(doc)),
"indexDocValue(" + scoreValueField + ")");
}
};
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreProvider.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreProvider.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreProvider.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreProvider.java Tue Apr 21 12:55:41 2015
@@ -18,9 +18,11 @@ package org.apache.lucene.queries;
*/
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
-import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.IndexReader; // for javadocs
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionQuery;
import org.apache.lucene.search.Explanation;
@@ -130,12 +132,13 @@ public class CustomScoreProvider {
for (Explanation valSrcExpl : valSrcExpls) {
valSrcScore *= valSrcExpl.getValue();
}
- Explanation exp = new Explanation( valSrcScore * subQueryExpl.getValue(), "custom score: product of:");
- exp.addDetail(subQueryExpl);
+
+ List<Explanation> subs = new ArrayList<>();
+ subs.add(subQueryExpl);
for (Explanation valSrcExpl : valSrcExpls) {
- exp.addDetail(valSrcExpl);
+ subs.add(valSrcExpl);
}
- return exp;
+ return Explanation.match(valSrcScore * subQueryExpl.getValue(), "custom score: product of:", subs);
}
/**
@@ -154,10 +157,7 @@ public class CustomScoreProvider {
if (valSrcExpl != null) {
valSrcScore *= valSrcExpl.getValue();
}
- Explanation exp = new Explanation( valSrcScore * subQueryExpl.getValue(), "custom score: product of:");
- exp.addDetail(subQueryExpl);
- exp.addDetail(valSrcExpl);
- return exp;
+ return Explanation.match(valSrcScore * subQueryExpl.getValue(), "custom score: product of:", subQueryExpl, valSrcExpl);
}
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java Tue Apr 21 12:55:41 2015
@@ -28,7 +28,6 @@ import org.apache.lucene.index.LeafReade
import org.apache.lucene.index.Term;
import org.apache.lucene.queries.function.FunctionQuery;
import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.FilterScorer;
import org.apache.lucene.search.IndexSearcher;
@@ -244,7 +243,7 @@ public class CustomScoreQuery extends Qu
@Override
public Explanation explain(LeafReaderContext context, int doc) throws IOException {
Explanation explain = doExplain(context, doc);
- return explain == null ? new Explanation(0.0f, "no matching docs") : explain;
+ return explain == null ? Explanation.noMatch("no matching docs") : explain;
}
private Explanation doExplain(LeafReaderContext info, int doc) throws IOException {
@@ -259,11 +258,9 @@ public class CustomScoreQuery extends Qu
}
Explanation customExp = CustomScoreQuery.this.getCustomScoreProvider(info).customExplain(doc,subQueryExpl,valSrcExpls);
float sc = queryWeight * customExp.getValue();
- Explanation res = new ComplexExplanation(
- true, sc, CustomScoreQuery.this.toString() + ", product of:");
- res.addDetail(customExp);
- res.addDetail(new Explanation(queryWeight, "queryWeight"));
- return res;
+ return Explanation.match(
+ sc, CustomScoreQuery.this.toString() + ", product of:",
+ customExp, Explanation.match(queryWeight, "queryWeight"));
}
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java Tue Apr 21 12:55:41 2015
@@ -34,7 +34,6 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.ConstantScoreQuery;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Explanation;
@@ -377,19 +376,12 @@ public class TermsQuery extends Query im
final Scorer s = scorer(context, context.reader().getLiveDocs());
final boolean exists = (s != null && s.advance(doc) == doc);
- final ComplexExplanation result = new ComplexExplanation();
if (exists) {
- result.setDescription(TermsQuery.this.toString() + ", product of:");
- result.setValue(queryWeight);
- result.setMatch(Boolean.TRUE);
- result.addDetail(new Explanation(getBoost(), "boost"));
- result.addDetail(new Explanation(queryNorm, "queryNorm"));
+ return Explanation.match(queryWeight, TermsQuery.this.toString() + ", product of:",
+ Explanation.match(getBoost(), "boost"), Explanation.match(queryNorm, "queryNorm"));
} else {
- result.setDescription(TermsQuery.this.toString() + " doesn't match id " + doc);
- result.setValue(0);
- result.setMatch(Boolean.FALSE);
+ return Explanation.noMatch(TermsQuery.this.toString() + " doesn't match id " + doc);
}
- return result;
}
@Override
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java Tue Apr 21 12:55:41 2015
@@ -26,7 +26,6 @@ import java.util.Set;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.FilterScorer;
import org.apache.lucene.search.IndexSearcher;
@@ -115,11 +114,7 @@ public class BoostedQuery extends Query
}
FunctionValues vals = boostVal.getValues(fcontext, readerContext);
float sc = subQueryExpl.getValue() * vals.floatVal(doc);
- Explanation res = new ComplexExplanation(
- true, sc, BoostedQuery.this.toString() + ", product of:");
- res.addDetail(subQueryExpl);
- res.addDetail(vals.explain(doc));
- return res;
+ return Explanation.match(sc, BoostedQuery.this.toString() + ", product of:", subQueryExpl, vals.explain(doc));
}
}
@@ -160,11 +155,7 @@ public class BoostedQuery extends Query
return subQueryExpl;
}
float sc = subQueryExpl.getValue() * vals.floatVal(doc);
- Explanation res = new ComplexExplanation(
- true, sc, BoostedQuery.this.toString() + ", product of:");
- res.addDetail(subQueryExpl);
- res.addDetail(vals.explain(doc));
- return res;
+ return Explanation.match(sc, BoostedQuery.this.toString() + ", product of:", subQueryExpl, vals.explain(doc));
}
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java Tue Apr 21 12:55:41 2015
@@ -24,7 +24,6 @@ import java.util.Set;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
@@ -170,13 +169,10 @@ public class FunctionQuery extends Query
public Explanation explain(int doc) throws IOException {
float sc = qWeight * vals.floatVal(doc);
- Explanation result = new ComplexExplanation
- (true, sc, "FunctionQuery(" + func + "), product of:");
-
- result.addDetail(vals.explain(doc));
- result.addDetail(new Explanation(getBoost(), "boost"));
- result.addDetail(new Explanation(weight.queryNorm,"queryNorm"));
- return result;
+ return Explanation.match(sc, "FunctionQuery(" + func + "), product of:",
+ vals.explain(doc),
+ Explanation.match(getBoost(), "boost"),
+ Explanation.match(weight.queryNorm, "queryNorm"));
}
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionValues.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionValues.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionValues.java Tue Apr 21 12:55:41 2015
@@ -133,7 +133,7 @@ public abstract class FunctionValues {
public void strVal(int doc, String [] vals) { throw new UnsupportedOperationException(); }
public Explanation explain(int doc) {
- return new Explanation(floatVal(doc), toString(doc));
+ return Explanation.match(floatVal(doc), toString(doc));
}
public ValueSourceScorer getScorer(IndexReader reader) {
Modified: lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java Tue Apr 21 12:55:41 2015
@@ -17,7 +17,18 @@ package org.apache.lucene.queries;
* limitations under the License.
*/
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.DocValues;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.NumericDocValues;
+import org.apache.lucene.index.Term;
import org.apache.lucene.queries.function.FunctionQuery;
import org.apache.lucene.queries.function.FunctionTestSetup;
import org.apache.lucene.queries.function.ValueSource;
@@ -33,15 +44,6 @@ import org.apache.lucene.search.TermRang
import org.apache.lucene.search.TopDocs;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.index.Term;
/**
* Test CustomScoreQuery search.
@@ -94,13 +96,13 @@ public class TestCustomScoreQuery extend
@Override
public Explanation customExplain(int doc, Explanation subQueryExpl, Explanation valSrcExpl) {
- float valSrcScore = valSrcExpl == null ? 0 : valSrcExpl.getValue();
- Explanation exp = new Explanation(valSrcScore + subQueryExpl.getValue(), "custom score: sum of:");
- exp.addDetail(subQueryExpl);
+ List<Explanation> subs = new ArrayList<>();
+ subs.add(subQueryExpl);
if (valSrcExpl != null) {
- exp.addDetail(valSrcExpl);
+ subs.add(valSrcExpl);
}
- return exp;
+ float valSrcScore = valSrcExpl == null ? 0 : valSrcExpl.getValue();
+ return Explanation.match(valSrcScore + subQueryExpl.getValue(), "custom score: sum of:", subs);
}
};
}
@@ -140,17 +142,12 @@ public class TestCustomScoreQuery extend
if (valSrcExpls.length == 0) {
return subQueryExpl;
}
- Explanation exp = new Explanation(valSrcExpls[0].getValue() + subQueryExpl.getValue(), "sum of:");
- exp.addDetail(subQueryExpl);
- exp.addDetail(valSrcExpls[0]);
if (valSrcExpls.length == 1) {
- exp.setDescription("CustomMulAdd, sum of:");
- return exp;
+ return Explanation.match(valSrcExpls[0].getValue() + subQueryExpl.getValue(), "CustomMulAdd, sum of:", subQueryExpl, valSrcExpls[0]);
+ } else {
+ Explanation exp = Explanation.match(valSrcExpls[0].getValue() + subQueryExpl.getValue(), "sum of:", subQueryExpl, valSrcExpls[0]);
+ return Explanation.match(valSrcExpls[1].getValue() * exp.getValue(), "custom score: product of:", valSrcExpls[1], exp);
}
- Explanation exp2 = new Explanation(valSrcExpls[1].getValue() * exp.getValue(), "custom score: product of:");
- exp2.addDetail(valSrcExpls[1]);
- exp2.addDetail(exp);
- return exp2;
}
};
}
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxOverlapRatioValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxOverlapRatioValueSource.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxOverlapRatioValueSource.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxOverlapRatioValueSource.java Tue Apr 21 12:55:41 2015
@@ -16,10 +16,13 @@
*/
package org.apache.lucene.spatial.bbox;
-import com.spatial4j.core.shape.Rectangle;
+import java.util.concurrent.atomic.AtomicReference;
+
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.Explanation;
+import com.spatial4j.core.shape.Rectangle;
+
/**
* The algorithm is implemented as envelope on envelope (rect on rect) overlays rather than
* complex polygon on complex polygon overlays.
@@ -126,7 +129,7 @@ public class BBoxOverlapRatioValueSource
}
@Override
- protected double score(Rectangle target, Explanation exp) {
+ protected double score(Rectangle target, AtomicReference<Explanation> exp) {
// calculate "height": the intersection height between two boxes.
double top = Math.min(queryExtent.getMaxY(), target.getMaxY());
double bottom = Math.max(queryExtent.getMinY(), target.getMinY());
@@ -211,25 +214,19 @@ public class BBoxOverlapRatioValueSource
double score = queryFactor + targetFactor;
if (exp!=null) {
- exp.setValue((float)score);
- exp.setDescription(this.getClass().getSimpleName()+": queryFactor + targetFactor");
-
- Explanation e;//tmp
-
String minSideDesc = minSideLength > 0.0 ? " (minSide="+minSideLength+")" : "";
-
- exp.addDetail( e = new Explanation((float)intersectionArea, "IntersectionArea" + minSideDesc));
- e.addDetail(new Explanation((float)width, "width"));
- e.addDetail(new Explanation((float)height, "height"));
- e.addDetail(new Explanation((float)queryTargetProportion, "queryTargetProportion"));
-
- exp.addDetail( e = new Explanation((float)queryFactor, "queryFactor"));
- e.addDetail(new Explanation((float)queryRatio, "ratio"));
- e.addDetail(new Explanation((float)queryArea, "area of " + queryExtent + minSideDesc));
-
- exp.addDetail( e = new Explanation((float)targetFactor, "targetFactor"));
- e.addDetail(new Explanation((float)targetRatio, "ratio"));
- e.addDetail(new Explanation((float)targetArea, "area of " + target + minSideDesc));
+ exp.set(Explanation.match((float) score,
+ this.getClass().getSimpleName()+": queryFactor + targetFactor",
+ Explanation.match((float)intersectionArea, "IntersectionArea" + minSideDesc,
+ Explanation.match((float)width, "width"),
+ Explanation.match((float)height, "height"),
+ Explanation.match((float)queryTargetProportion, "queryTargetProportion")),
+ Explanation.match((float)queryFactor, "queryFactor",
+ Explanation.match((float)targetRatio, "ratio"),
+ Explanation.match((float)queryArea, "area of " + queryExtent + minSideDesc)),
+ Explanation.match((float)targetFactor, "targetFactor",
+ Explanation.match((float)targetRatio, "ratio"),
+ Explanation.match((float)targetArea, "area of " + target + minSideDesc))));
}
return score;
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxSimilarityValueSource.java Tue Apr 21 12:55:41 2015
@@ -17,7 +17,10 @@ package org.apache.lucene.spatial.bbox;
* limitations under the License.
*/
-import com.spatial4j.core.shape.Rectangle;
+import java.io.IOException;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
@@ -25,8 +28,7 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
-import java.io.IOException;
-import java.util.Map;
+import com.spatial4j.core.shape.Rectangle;
/**
* A base class for calculating a spatial relevance rank per document from a provided
@@ -81,10 +83,10 @@ public abstract class BBoxSimilarityValu
public Explanation explain(int doc) {
final Rectangle rect = (Rectangle) shapeValues.objectVal(doc);
if (rect == null)
- return new Explanation(0, "no rect");
- Explanation exp = new Explanation();
- score(rect, exp);
- return exp;
+ return Explanation.noMatch("no rect");
+ AtomicReference<Explanation> explanation = new AtomicReference<>();
+ score(rect, explanation);
+ return explanation.get();
}
};
}
@@ -95,7 +97,7 @@ public abstract class BBoxSimilarityValu
* @param exp Optional diagnostic holder.
* @return a score.
*/
- protected abstract double score(Rectangle rect, Explanation exp);
+ protected abstract double score(Rectangle rect, AtomicReference<Explanation> exp);
@Override
public boolean equals(Object o) {
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/bbox/BBoxValueSource.java Tue Apr 21 12:55:41 2015
@@ -87,7 +87,7 @@ class BBoxValueSource extends ValueSourc
@Override
public Explanation explain(int doc) {
- return new Explanation(Float.NaN, toString(doc));
+ return Explanation.match(Float.NaN, toString(doc));
}
@Override
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java Tue Apr 21 12:55:41 2015
@@ -266,7 +266,7 @@ public class SerializedDVStrategy extend
@Override
public Explanation explain(int doc) {
- return new Explanation(Float.NaN, toString(doc));
+ return Explanation.match(Float.NaN, toString(doc));
}
@Override
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/DistanceToShapeValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/DistanceToShapeValueSource.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/DistanceToShapeValueSource.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/DistanceToShapeValueSource.java Tue Apr 21 12:55:41 2015
@@ -17,10 +17,12 @@ package org.apache.lucene.spatial.util;
* limitations under the License.
*/
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.distance.DistanceCalculator;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Shape;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
@@ -28,8 +30,10 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
-import java.io.IOException;
-import java.util.Map;
+import com.spatial4j.core.context.SpatialContext;
+import com.spatial4j.core.distance.DistanceCalculator;
+import com.spatial4j.core.shape.Point;
+import com.spatial4j.core.shape.Shape;
/**
* The distance from a provided Point to a Point retrieved from a ValueSource via
@@ -84,8 +88,9 @@ public class DistanceToShapeValueSource
@Override
public Explanation explain(int doc) {
Explanation exp = super.explain(doc);
- exp.addDetail(shapeValues.explain(doc));
- return exp;
+ List<Explanation> details = new ArrayList<>(Arrays.asList(exp.getDetails()));
+ details.add(shapeValues.explain(doc));
+ return Explanation.match(exp.getValue(), exp.getDescription(), details);
}
};
}
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapeAreaValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapeAreaValueSource.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapeAreaValueSource.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapeAreaValueSource.java Tue Apr 21 12:55:41 2015
@@ -18,10 +18,14 @@ package org.apache.lucene.spatial.util;
*/
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.Map;
import com.spatial4j.core.context.SpatialContext;
import com.spatial4j.core.shape.Shape;
+
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
@@ -83,8 +87,9 @@ public class ShapeAreaValueSource extend
@Override
public Explanation explain(int doc) {
Explanation exp = super.explain(doc);
- exp.addDetail(shapeValues.explain(doc));
- return exp;
+ List<Explanation> details = new ArrayList<>(Arrays.asList(exp.getDetails()));
+ details.add(shapeValues.explain(doc));
+ return Explanation.match(exp.getValue(), exp.getDescription(), details);
}
};
}
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapePredicateValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapePredicateValueSource.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapePredicateValueSource.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/util/ShapePredicateValueSource.java Tue Apr 21 12:55:41 2015
@@ -18,6 +18,7 @@ package org.apache.lucene.spatial.util;
*/
import com.spatial4j.core.shape.Shape;
+
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
@@ -27,6 +28,9 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.spatial.query.SpatialOperation;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.Map;
/**
@@ -79,8 +83,9 @@ public class ShapePredicateValueSource e
@Override
public Explanation explain(int doc) {
Explanation exp = super.explain(doc);
- exp.addDetail(shapeValues.explain(doc));
- return exp;
+ List<Explanation> details = new ArrayList<>(Arrays.asList(exp.getDetails()));
+ details.add(shapeValues.explain(doc));
+ return Explanation.match(exp.getValue(), exp.getDescription(), details);
}
};
}
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java Tue Apr 21 12:55:41 2015
@@ -347,7 +347,7 @@ public class CheckHits {
if (expl.getDescription().endsWith("computed from:")) {
return; // something more complicated.
}
- if (detail!=null) {
+ if (detail.length > 0) {
if (detail.length==1) {
// simple containment, unless it's a freq of: (which lets a query explain how the freq is calculated),
// just verify contained expl has same score
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java Tue Apr 21 12:55:41 2015
@@ -22,10 +22,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.distance.DistanceUtils;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Rectangle;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
@@ -35,7 +31,6 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.queries.function.valuesource.VectorValueSource;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
@@ -53,6 +48,11 @@ import org.apache.solr.search.QParser;
import org.apache.solr.search.SpatialOptions;
import org.apache.solr.util.SpatialUtils;
+import com.spatial4j.core.context.SpatialContext;
+import com.spatial4j.core.distance.DistanceUtils;
+import com.spatial4j.core.shape.Point;
+import com.spatial4j.core.shape.Rectangle;
+
/**
* Represents a Latitude/Longitude as a 2 dimensional point. Latitude is <b>always</b> specified first.
@@ -495,13 +495,14 @@ class SpatialDistanceQuery extends Exten
String description = SpatialDistanceQuery.this.toString();
- Explanation result = new ComplexExplanation
- (this.doc == doc, sc, description + " product of:");
- // result.addDetail(new Explanation((float)dist, "hsin("+latVals.explain(doc)+","+lonVals.explain(doc)));
- result.addDetail(new Explanation((float)dist, "hsin("+latVals.doubleVal(doc)+","+lonVals.doubleVal(doc)));
- result.addDetail(new Explanation(getBoost(), "boost"));
- result.addDetail(new Explanation(weight.queryNorm,"queryNorm"));
- return result;
+ if (matched) {
+ return Explanation.match(sc, description + " product of:",
+ Explanation.match((float) dist, "hsin("+latVals.doubleVal(doc)+","+lonVals.doubleVal(doc)),
+ Explanation.match(getBoost(), "boost"),
+ Explanation.match(weight.queryNorm,"queryNorm"));
+ } else {
+ return Explanation.noMatch("No match");
+ }
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java Tue Apr 21 12:55:41 2015
@@ -31,7 +31,6 @@ import org.apache.lucene.index.MultiPost
import org.apache.lucene.index.PostingsEnum;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Explanation;
@@ -568,22 +567,13 @@ class JoinQuery extends Query {
Scorer scorer = scorer(context, context.reader().getLiveDocs());
boolean exists = scorer.advance(doc) == doc;
- ComplexExplanation result = new ComplexExplanation();
-
if (exists) {
- result.setDescription(this.toString()
- + " , product of:");
- result.setValue(queryWeight);
- result.setMatch(Boolean.TRUE);
- result.addDetail(new Explanation(getBoost(), "boost"));
- result.addDetail(new Explanation(queryNorm,"queryNorm"));
+ return Explanation.match(queryWeight, this.toString() + " , product of:",
+ Explanation.match(getBoost(), "boost"),
+ Explanation.match(queryNorm,"queryNorm"));
} else {
- result.setDescription(this.toString()
- + " doesn't match id " + doc);
- result.setValue(0);
- result.setMatch(Boolean.FALSE);
+ return Explanation.noMatch(this.toString() + " doesn't match id " + doc);
}
- return result;
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Tue Apr 21 12:55:41 2015
@@ -7,7 +7,6 @@ import java.util.Set;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.ComplexExplanation;
import org.apache.lucene.search.ConstantScoreQuery;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
@@ -135,22 +134,13 @@ public class SolrConstantScoreQuery exte
ConstantScorer cs = new ConstantScorer(context, this, queryWeight, context.reader().getLiveDocs());
boolean exists = cs.docIdSetIterator.advance(doc) == doc;
- ComplexExplanation result = new ComplexExplanation();
-
if (exists) {
- result.setDescription("ConstantScoreQuery(" + filter
- + "), product of:");
- result.setValue(queryWeight);
- result.setMatch(Boolean.TRUE);
- result.addDetail(new Explanation(getBoost(), "boost"));
- result.addDetail(new Explanation(queryNorm,"queryNorm"));
+ return Explanation.match(queryWeight, "ConstantScoreQuery(" + filter + "), product of:",
+ Explanation.match(getBoost(), "boost"),
+ Explanation.match(queryNorm,"queryNorm"));
} else {
- result.setDescription("ConstantScoreQuery(" + filter
- + ") doesn't match id " + doc);
- result.setValue(0);
- result.setMatch(Boolean.FALSE);
+ return Explanation.noMatch("ConstantScoreQuery(" + filter + ") doesn't match id " + doc);
}
- return result;
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1675109&r1=1675108&r2=1675109&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java Tue Apr 21 12:55:41 2015
@@ -387,7 +387,7 @@ public class SolrPluginUtils {
Explanation[] details = e.getDetails();
// short circut out
- if (null == details || 0 == details.length) return out;
+ if (0 == details.length) return out;
List<NamedList<Object>> kids
= new ArrayList<>(details.length);