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/06/09 21:02:38 UTC
svn commit: r1684502 - in /lucene/dev/trunk: lucene/
lucene/core/src/java/org/apache/lucene/search/
lucene/core/src/java/org/apache/lucene/search/spans/
lucene/core/src/test/org/apache/lucene/search/
lucene/core/src/test/org/apache/lucene/search/spans/...
Author: jpountz
Date: Tue Jun 9 19:02:37 2015
New Revision: 1684502
URL: http://svn.apache.org/r1684502
Log:
LUCENE-6527: Queries now get a dummy Similarity when scores are not needed in order to not load unnecessary information like norms.
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBoolean2.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IDFValueSource.java
lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/NormValueSource.java
lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java
lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestLongNormValueSource.java
lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java
lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/similarities/BaseSimilarityTestCase.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Tue Jun 9 19:02:37 2015
@@ -92,6 +92,9 @@ Bug fixes
* LUCENE-6482: Fix class loading deadlock relating to Codec initialization,
default codec and SPI discovery. (Shikhar Bhushan, Uwe Schindler)
+* LUCENE-6527: Queries now get a dummy Similarity when scores are not needed
+ in order to not load unnecessary information like norms. (Adrien Grand)
+
Changes in Runtime Behavior
* LUCENE-6501: The subreader structure in ParallelCompositeReader
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/BooleanWeight.java Tue Jun 9 19:02:37 2015
@@ -50,7 +50,7 @@ public class BooleanWeight extends Weigh
super(query);
this.query = query;
this.needsScores = needsScores;
- this.similarity = searcher.getSimilarity();
+ this.similarity = searcher.getSimilarity(needsScores);
weights = new ArrayList<>(query.clauses().size());
for (int i = 0 ; i < query.clauses().size(); i++) {
BooleanClause c = query.clauses().get(i);
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java Tue Jun 9 19:02:37 2015
@@ -31,6 +31,7 @@ import java.util.concurrent.ExecutorServ
import java.util.concurrent.Future;
import org.apache.lucene.index.DirectoryReader; // javadocs
+import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.index.IndexWriter; // javadocs
@@ -45,6 +46,7 @@ import org.apache.lucene.index.Terms;
import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.store.NIOFSDirectory; // javadoc
+import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.ThreadInterruptedException;
/** Implements search over a single IndexReader.
@@ -74,6 +76,54 @@ import org.apache.lucene.util.ThreadInte
*/
public class IndexSearcher {
+ /** A search-time {@link Similarity} that does not make use of scoring factors
+ * and may be used when scores are not needed. */
+ private static final Similarity NON_SCORING_SIMILARITY = new Similarity() {
+
+ @Override
+ public long computeNorm(FieldInvertState state) {
+ throw new UnsupportedOperationException("This Similarity may only be used for searching, not indexing");
+ }
+
+ @Override
+ public SimWeight computeWeight(float queryBoost, CollectionStatistics collectionStats, TermStatistics... termStats) {
+ return new SimWeight() {
+
+ @Override
+ public float getValueForNormalization() {
+ return 1f;
+ }
+
+ @Override
+ public void normalize(float queryNorm, float topLevelBoost) {}
+
+ };
+ }
+
+ @Override
+ public SimScorer simScorer(SimWeight weight, LeafReaderContext context) throws IOException {
+ return new SimScorer() {
+
+ @Override
+ public float score(int doc, float freq) {
+ return 0f;
+ }
+
+ @Override
+ public float computeSlopFactor(int distance) {
+ return 1f;
+ }
+
+ @Override
+ public float computePayloadFactor(int doc, int start, int end, BytesRef payload) {
+ return 1f;
+ }
+
+ };
+ }
+
+ };
+
// disabled by default
private static QueryCache DEFAULT_QUERY_CACHE = null;
private static QueryCachingPolicy DEFAULT_CACHING_POLICY = new UsageTrackingQueryCachingPolicy();
@@ -100,7 +150,7 @@ public class IndexSearcher {
* Expert: returns a default Similarity instance.
* In general, this method is only called to initialize searchers and writers.
* User code and query implementations should respect
- * {@link IndexSearcher#getSimilarity()}.
+ * {@link IndexSearcher#getSimilarity(boolean)}.
* @lucene.internal
*/
public static Similarity getDefaultSimilarity() {
@@ -273,8 +323,15 @@ public class IndexSearcher {
this.similarity = similarity;
}
- public Similarity getSimilarity() {
- return similarity;
+ /** Expert: Get the {@link Similarity} to use to compute scores. When
+ * {@code needsScores} is {@code false}, this method will return a simple
+ * {@link Similarity} that does not leverage scoring factors such as norms.
+ * When {@code needsScores} is {@code true}, this returns the
+ * {@link Similarity} that has been set through {@link #setSimilarity(Similarity)}
+ * or the {@link #getDefaultSimilarity()} default {@link Similarity} if none
+ * has been set explicitely. */
+ public Similarity getSimilarity(boolean needsScores) {
+ return needsScores ? similarity : NON_SCORING_SIMILARITY;
}
/**
@@ -625,7 +682,7 @@ public class IndexSearcher {
query = rewrite(query);
Weight weight = createWeight(query, needsScores);
float v = weight.getValueForNormalization();
- float norm = getSimilarity().queryNorm(v);
+ float norm = getSimilarity(needsScores).queryNorm(v);
if (Float.isInfinite(norm) || Float.isNaN(norm)) {
norm = 1.0f;
}
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java Tue Jun 9 19:02:37 2015
@@ -138,7 +138,7 @@ public class MultiPhraseQuery extends Qu
throws IOException {
super(MultiPhraseQuery.this);
this.needsScores = needsScores;
- this.similarity = searcher.getSimilarity();
+ this.similarity = searcher.getSimilarity(needsScores);
final IndexReaderContext context = searcher.getTopReaderContext();
// compute idf
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java Tue Jun 9 19:02:37 2015
@@ -255,7 +255,7 @@ public class PhraseQuery extends Query {
throw new IllegalStateException("PhraseWeight requires that the first position is 0, call rewrite first");
}
this.needsScores = needsScores;
- this.similarity = searcher.getSimilarity();
+ this.similarity = searcher.getSimilarity(needsScores);
final IndexReaderContext context = searcher.getTopReaderContext();
states = new TermContext[terms.size()];
TermStatistics termStats[] = new TermStatistics[terms.size()];
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/TermQuery.java Tue Jun 9 19:02:37 2015
@@ -58,7 +58,7 @@ public class TermQuery extends Query {
// checked with a real exception in TermQuery constructor
assert termStates.hasOnlyRealTerms();
this.termStates = termStates;
- this.similarity = searcher.getSimilarity();
+ this.similarity = searcher.getSimilarity(needsScores);
final CollectionStatistics collectionStats;
final TermStatistics termStats;
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java Tue Jun 9 19:02:37 2015
@@ -84,10 +84,6 @@ public abstract class SpanPositionCheckQ
this.matchWeight = matchWeight;
}
- public SpanPositionCheckWeight(SpanWeight matchWeight, IndexSearcher searcher, Map<Term, TermContext> terms) throws IOException {
- this(matchWeight, searcher, terms, SpanCollectorFactory.NO_OP_FACTORY);
- }
-
@Override
public void extractTerms(Set<Term> terms) {
matchWeight.extractTerms(terms);
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java Tue Jun 9 19:02:37 2015
@@ -56,7 +56,7 @@ public abstract class SpanWeight extends
public SpanWeight(SpanQuery query, IndexSearcher searcher, Map<Term, TermContext> termContexts, SpanCollectorFactory collectorFactory) throws IOException {
super(query);
this.field = query.getField();
- this.similarity = searcher.getSimilarity();
+ this.similarity = searcher.getSimilarity(termContexts != null);
this.collectorFactory = collectorFactory;
this.simWeight = buildSimWeight(query, searcher, termContexts);
}
@@ -71,7 +71,7 @@ public abstract class SpanWeight extends
i++;
}
CollectionStatistics collectionStats = searcher.collectionStatistics(query.getField());
- return searcher.getSimilarity().computeWeight(query.getBoost(), collectionStats, termStats);
+ return searcher.getSimilarity(true).computeWeight(query.getBoost(), collectionStats, termStats);
}
/**
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBoolean2.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBoolean2.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBoolean2.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBoolean2.java Tue Jun 9 19:02:37 2015
@@ -240,7 +240,7 @@ public class TestBoolean2 extends Lucene
query.add(new TermQuery(new Term(field, "zz")), BooleanClause.Occur.SHOULD);
int[] expDocNrs = {2, 3};
- Similarity oldSimilarity = searcher.getSimilarity();
+ Similarity oldSimilarity = searcher.getSimilarity(true);
try {
searcher.setSimilarity(new DefaultSimilarity(){
@Override
@@ -276,7 +276,7 @@ public class TestBoolean2 extends Lucene
QueryUtils.check(random(), q1,searcher); // baseline sim
try {
// a little hackish, QueryUtils.check is too costly to do on bigSearcher in this loop.
- searcher.setSimilarity(bigSearcher.getSimilarity()); // random sim
+ searcher.setSimilarity(bigSearcher.getSimilarity(true)); // random sim
QueryUtils.check(random(), q1, searcher);
} finally {
searcher.setSimilarity(new DefaultSimilarity()); // restore
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java Tue Jun 9 19:02:37 2015
@@ -397,7 +397,7 @@ public class TestBooleanMinShouldMatch e
}
public void testRewriteCoord1() throws Exception {
- final Similarity oldSimilarity = s.getSimilarity();
+ final Similarity oldSimilarity = s.getSimilarity(true);
try {
s.setSimilarity(new DefaultSimilarity() {
@Override
@@ -419,7 +419,7 @@ public class TestBooleanMinShouldMatch e
}
public void testRewriteNegate() throws Exception {
- final Similarity oldSimilarity = s.getSimilarity();
+ final Similarity oldSimilarity = s.getSimilarity(true);
try {
s.setSimilarity(new DefaultSimilarity() {
@Override
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestDocValuesScoring.java Tue Jun 9 19:02:37 2015
@@ -68,7 +68,7 @@ public class TestDocValuesScoring extend
// no boosting
IndexSearcher searcher1 = newSearcher(ir, false);
- final Similarity base = searcher1.getSimilarity();
+ final Similarity base = searcher1.getSimilarity(true);
// boosting
IndexSearcher searcher2 = newSearcher(ir, false);
searcher2.setSimilarity(new PerFieldSimilarityWrapper() {
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java Tue Jun 9 19:02:37 2015
@@ -183,4 +183,30 @@ public class TestTermScorer extends Luce
}
}
+ public void testDoesNotLoadNorms() throws IOException {
+ Term allTerm = new Term(FIELD, "all");
+ TermQuery termQuery = new TermQuery(allTerm);
+
+ LeafReader forbiddenNorms = new FilterLeafReader(indexReader) {
+ @Override
+ public NumericDocValues getNormValues(String field) throws IOException {
+ fail("Norms should not be loaded");
+ // unreachable
+ return null;
+ }
+ };
+ IndexSearcher indexSearcher = newSearcher(forbiddenNorms);
+
+ Weight weight = indexSearcher.createNormalizedWeight(termQuery, true);
+ try {
+ weight.scorer(forbiddenNorms.getContext(), null).nextDoc();
+ fail("Should load norms");
+ } catch (AssertionError e) {
+ // ok
+ }
+
+ weight = indexSearcher.createNormalizedWeight(termQuery, false);
+ // should not fail this time since norms are not necessary
+ weight.scorer(forbiddenNorms.getContext(), null).nextDoc();
+ }
}
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java Tue Jun 9 19:02:37 2015
@@ -244,7 +244,7 @@ public class TestFieldMaskingSpanQuery e
public void testSimple2() throws Exception {
assumeTrue("Broken scoring: LUCENE-3723",
- searcher.getSimilarity() instanceof TFIDFSimilarity);
+ searcher.getSimilarity(true) instanceof TFIDFSimilarity);
SpanQuery q1 = new SpanTermQuery(new Term("gender", "female"));
SpanQuery q2 = new SpanTermQuery(new Term("last", "smith"));
SpanQuery q = new SpanNearQuery(new SpanQuery[]
@@ -300,7 +300,7 @@ public class TestFieldMaskingSpanQuery e
public void testSpans2() throws Exception {
assumeTrue("Broken scoring: LUCENE-3723",
- searcher.getSimilarity() instanceof TFIDFSimilarity);
+ searcher.getSimilarity(true) instanceof TFIDFSimilarity);
SpanQuery qA1 = new SpanTermQuery(new Term("gender", "female"));
SpanQuery qA2 = new SpanTermQuery(new Term("first", "james"));
SpanQuery qA = new SpanOrQuery(qA1, new FieldMaskingSpanQuery(qA2, "gender"));
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java Tue Jun 9 19:02:37 2015
@@ -293,7 +293,7 @@ public class TestSpans extends LuceneTes
}
};
- final Similarity oldSim = searcher.getSimilarity();
+ final Similarity oldSim = searcher.getSimilarity(true);
Scorer spanScorer;
try {
searcher.setSimilarity(sim);
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=1684502&r1=1684501&r2=1684502&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 Jun 9 19:02:37 2015
@@ -373,7 +373,7 @@ public class TestDiversifiedTopDocsColle
artistDocValues = ar.getSortedDocValues("artist");
// All searches sort by song popularity
- final Similarity base = searcher.getSimilarity();
+ final Similarity base = searcher.getSimilarity(true);
searcher.setSimilarity(new DocValueSimilarity(base, "weeksAtNumberOne"));
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IDFValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IDFValueSource.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IDFValueSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IDFValueSource.java Tue Jun 9 19:02:37 2015
@@ -48,7 +48,7 @@ public class IDFValueSource extends DocF
@Override
public FunctionValues getValues(Map context, LeafReaderContext readerContext) throws IOException {
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
- TFIDFSimilarity sim = asTFIDF(searcher.getSimilarity(), field);
+ TFIDFSimilarity sim = asTFIDF(searcher.getSimilarity(true), field);
if (sim == null) {
throw new UnsupportedOperationException("requires a TFIDFSimilarity (such as DefaultSimilarity)");
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/NormValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/NormValueSource.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/NormValueSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/NormValueSource.java Tue Jun 9 19:02:37 2015
@@ -58,7 +58,7 @@ public class NormValueSource extends Val
@Override
public FunctionValues getValues(Map context, LeafReaderContext readerContext) throws IOException {
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
- final TFIDFSimilarity similarity = IDFValueSource.asTFIDF(searcher.getSimilarity(), field);
+ final TFIDFSimilarity similarity = IDFValueSource.asTFIDF(searcher.getSimilarity(true), field);
if (similarity == null) {
throw new UnsupportedOperationException("requires a TFIDFSimilarity (such as DefaultSimilarity)");
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java Tue Jun 9 19:02:37 2015
@@ -54,7 +54,7 @@ public class TFValueSource extends TermF
Fields fields = readerContext.reader().fields();
final Terms terms = fields.terms(indexedField);
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
- final TFIDFSimilarity similarity = IDFValueSource.asTFIDF(searcher.getSimilarity(), indexedField);
+ final TFIDFSimilarity similarity = IDFValueSource.asTFIDF(searcher.getSimilarity(true), indexedField);
if (similarity == null) {
throw new UnsupportedOperationException("requires a TFIDFSimilarity (such as DefaultSimilarity)");
}
Modified: lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestLongNormValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestLongNormValueSource.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestLongNormValueSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestLongNormValueSource.java Tue Jun 9 19:02:37 2015
@@ -85,7 +85,7 @@ public class TestLongNormValueSource ext
}
public void testNorm() throws Exception {
- Similarity saved = searcher.getSimilarity();
+ Similarity saved = searcher.getSimilarity(true);
try {
// no norm field (so agnostic to indexed similarity)
searcher.setSimilarity(sim);
Modified: lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java (original)
+++ lucene/dev/trunk/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java Tue Jun 9 19:02:37 2015
@@ -221,7 +221,7 @@ public class TestValueSources extends Lu
}
public void testIDF() throws Exception {
- Similarity saved = searcher.getSimilarity();
+ Similarity saved = searcher.getSimilarity(true);
try {
searcher.setSimilarity(new DefaultSimilarity());
ValueSource vs = new IDFValueSource("bogus", "bogus", "text", new BytesRef("test"));
@@ -339,7 +339,7 @@ public class TestValueSources extends Lu
}
public void testNorm() throws Exception {
- Similarity saved = searcher.getSimilarity();
+ Similarity saved = searcher.getSimilarity(true);
try {
// no norm field (so agnostic to indexed similarity)
searcher.setSimilarity(new DefaultSimilarity());
@@ -391,7 +391,7 @@ public class TestValueSources extends Lu
}
public void testQuery() throws Exception {
- Similarity saved = searcher.getSimilarity();
+ Similarity saved = searcher.getSimilarity(true);
try {
searcher.setSimilarity(new DefaultSimilarity());
@@ -498,7 +498,7 @@ public class TestValueSources extends Lu
}
public void testTF() throws Exception {
- Similarity saved = searcher.getSimilarity();
+ Similarity saved = searcher.getSimilarity(true);
try {
// no norm field (so agnostic to indexed similarity)
searcher.setSimilarity(new DefaultSimilarity());
Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java Tue Jun 9 19:02:37 2015
@@ -342,7 +342,7 @@ public class TermAutomatonQuery extends
this.automaton = automaton;
this.searcher = searcher;
this.termStates = termStates;
- this.similarity = searcher.getSimilarity();
+ this.similarity = searcher.getSimilarity(true);
List<TermStatistics> allTermStats = new ArrayList<>();
for(Map.Entry<Integer,BytesRef> ent : idToTerm.entrySet()) {
Integer termID = ent.getKey();
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java Tue Jun 9 19:02:37 2015
@@ -195,7 +195,7 @@ public class QueryUtils {
};
IndexSearcher out = LuceneTestCase.newSearcher(new FCInvisibleMultiReader(readers));
- out.setSimilarity(s.getSimilarity());
+ out.setSimilarity(s.getSimilarity(true));
return out;
}
@@ -411,7 +411,7 @@ public class QueryUtils {
if (lastReader[0] != null) {
final LeafReader previousReader = lastReader[0];
IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader);
- indexSearcher.setSimilarity(s.getSimilarity());
+ indexSearcher.setSimilarity(s.getSimilarity(true));
Weight w = indexSearcher.createNormalizedWeight(q, true);
LeafReaderContext ctx = (LeafReaderContext)indexSearcher.getTopReaderContext();
Scorer scorer = w.scorer(ctx, ctx.reader().getLiveDocs());
@@ -433,7 +433,7 @@ public class QueryUtils {
// previous reader, hits NO_MORE_DOCS
final LeafReader previousReader = lastReader[0];
IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader, false);
- indexSearcher.setSimilarity(s.getSimilarity());
+ indexSearcher.setSimilarity(s.getSimilarity(true));
Weight w = indexSearcher.createNormalizedWeight(q, true);
LeafReaderContext ctx = previousReader.getContext();
Scorer scorer = w.scorer(ctx, ctx.reader().getLiveDocs());
@@ -498,7 +498,7 @@ public class QueryUtils {
if (lastReader[0] != null) {
final LeafReader previousReader = lastReader[0];
IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader);
- indexSearcher.setSimilarity(s.getSimilarity());
+ indexSearcher.setSimilarity(s.getSimilarity(true));
Weight w = indexSearcher.createNormalizedWeight(q, true);
Scorer scorer = w.scorer((LeafReaderContext)indexSearcher.getTopReaderContext(), previousReader.getLiveDocs());
if (scorer != null) {
@@ -519,7 +519,7 @@ public class QueryUtils {
// previous reader, hits NO_MORE_DOCS
final LeafReader previousReader = lastReader[0];
IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader);
- indexSearcher.setSimilarity(s.getSimilarity());
+ indexSearcher.setSimilarity(s.getSimilarity(true));
Weight w = indexSearcher.createNormalizedWeight(q, true);
Scorer scorer = w.scorer((LeafReaderContext)indexSearcher.getTopReaderContext(), previousReader.getLiveDocs());
if (scorer != null) {
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/similarities/BaseSimilarityTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/similarities/BaseSimilarityTestCase.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/similarities/BaseSimilarityTestCase.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/similarities/BaseSimilarityTestCase.java Tue Jun 9 19:02:37 2015
@@ -30,7 +30,7 @@ public abstract class BaseSimilarityTest
protected Similarity getSimilarity(String field) {
SolrCore core = h.getCore();
RefCounted<SolrIndexSearcher> searcher = core.getSearcher();
- Similarity sim = searcher.get().getSimilarity();
+ Similarity sim = searcher.get().getSimilarity(true);
searcher.decref();
while (sim instanceof PerFieldSimilarityWrapper) {
sim = ((PerFieldSimilarityWrapper)sim).get(field);
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java?rev=1684502&r1=1684501&r2=1684502&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java Tue Jun 9 19:02:37 2015
@@ -354,9 +354,9 @@ public class DocumentBuilderTest extends
assertTrue("similarity doesn't extend DefaultSimilarity, " +
"config or defaults have changed since test was written",
- searcher.getSimilarity() instanceof DefaultSimilarity);
+ searcher.getSimilarity(true) instanceof DefaultSimilarity);
- DefaultSimilarity sim = (DefaultSimilarity) searcher.getSimilarity();
+ DefaultSimilarity sim = (DefaultSimilarity) searcher.getSimilarity(true);
NumericDocValues titleNorms = reader.getNormValues("title");
NumericDocValues fooNorms = reader.getNormValues("foo_t");