Index: lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java =================================================================== --- lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (revision 1397735) +++ lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (working copy) @@ -341,6 +341,7 @@ // idf used for phrase queries @Override public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics[] termStats) { + wasCalled = true; return new Explanation(1.0f, "Inexplicable"); } } Index: lucene/core/src/java/org/apache/lucene/search/similarities/Similarity.java =================================================================== --- lucene/core/src/java/org/apache/lucene/search/similarities/Similarity.java (revision 1397735) +++ lucene/core/src/java/org/apache/lucene/search/similarities/Similarity.java (working copy) @@ -108,6 +108,9 @@ * @lucene.experimental */ public abstract class Similarity { + + // nocommit + public boolean wasCalled; /** * Sole constructor. (For invocation by subclass Index: lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java =================================================================== --- lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java (revision 1397735) +++ lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java (working copy) @@ -106,8 +106,12 @@ return discountOverlaps; } + // nocommit + + /* @Override public String toString() { return "DefaultSimilarity"; } + */ } Index: lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java =================================================================== --- lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java (revision 1397735) +++ lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java (working copy) @@ -730,9 +730,17 @@ @Override public final SimWeight computeWeight(float queryBoost, CollectionStatistics collectionStats, TermStatistics... termStats) { + wasCalled = false; final Explanation idf = termStats.length == 1 ? idfExplain(collectionStats, termStats[0]) : idfExplain(collectionStats, termStats); + if (toString().indexOf("TestPayloadNearQuery$BoostingSimilarity@") != -1) { + if (!wasCalled) { + System.out.println("FAILED"); + throw new RuntimeException("overridden idfExplain method in TestPayloadNearQuery.BoostingSimilarity was not called"); + } + } + return new IDFStats(collectionStats.field(), idf, queryBoost); } Index: lucene/core/src/java/org/apache/lucene/util/fst/Util.java =================================================================== --- lucene/core/src/java/org/apache/lucene/util/fst/Util.java (revision 1397735) +++ lucene/core/src/java/org/apache/lucene/util/fst/Util.java (working copy) @@ -400,6 +400,7 @@ continue; } + // nocommit this isn't safe? last path could be rejected? if (results.size() == topN-1) { // Last path -- don't bother w/ queue anymore: queue = null;