fix testcase to only run QueryUtils on a optimized index

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1421788 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Simon Willnauer 2012-12-14 10:34:43 +00:00
parent 25ed110f82
commit 80ad45689a
2 changed files with 21 additions and 4 deletions

View File

@ -157,7 +157,10 @@ public class CommonTermsQuery extends Query {
final TermContext[] contextArray = new TermContext[terms.size()];
final Term[] queryTerms = this.terms.toArray(new Term[0]);
collectTermContext(reader, leaves, contextArray, queryTerms);
return buildQuery(maxDoc, contextArray, queryTerms);
Query q = buildQuery(maxDoc, contextArray, queryTerms);
System.out.println(reader);
System.out.println(q);
return q;
}
protected Query buildQuery(final int maxDoc,
@ -172,15 +175,20 @@ public class CommonTermsQuery extends Query {
BooleanQuery query = new BooleanQuery(true);
for (int i = 0; i < queryTerms.length; i++) {
TermContext termContext = contextArray[i];
if (termContext == null) {
System.out.println("term: " + queryTerms[i] + " context: " + -1 + " maxTermFrequency: " + maxTermFrequency + " LOW");
lowFreq.add(new TermQuery(queryTerms[i]), lowFreqOccur);
} else {
if ((maxTermFrequency >= 1f && termContext.docFreq() > maxTermFrequency)
|| (termContext.docFreq() > (int) Math.ceil(maxTermFrequency
* (float) maxDoc))) {
System.out.println("term: " + queryTerms[i] + " context: " + termContext.docFreq() + " maxTermFrequency: " + maxTermFrequency + " HIGH");
highFreq
.add(new TermQuery(queryTerms[i], termContext), highFreqOccur);
} else {
System.out.println("term: " + queryTerms[i] + " context: " + termContext.docFreq() + " maxTermFrequency: " + maxTermFrequency + " LOW");
lowFreq.add(new TermQuery(queryTerms[i], termContext), lowFreqOccur);
}
}
@ -257,8 +265,6 @@ public class CommonTermsQuery extends Query {
* Returns true iff {@link Similarity#coord(int,int)} is disabled in scoring
* for the high and low frequency query instance. The top level query will
* always disable coords.
*
* @see #CommonTermsQuery(Occur, Occur, float, boolean)
*/
public boolean isCoordDisabled() {
return disableCoord;

View File

@ -263,7 +263,6 @@ public class CommonTermsQueryTest extends LuceneTestCase {
}
TopDocs cqSearch = searcher.search(cq, reader.maxDoc());
QueryUtils.check(random(), cq, searcher);
TopDocs verifySearch = searcher.search(verifyQuery, reader.maxDoc());
assertEquals(verifySearch.totalHits, cqSearch.totalHits);
@ -277,6 +276,18 @@ public class CommonTermsQueryTest extends LuceneTestCase {
}
assertTrue(hits.isEmpty());
/*
* need to force merge here since QueryUtils adds checks based
* on leave readers which have different statistics than the top
* level reader if we have more than one segment. This could
* result in a different query / results.
*/
w.forceMerge(1);
DirectoryReader reader2 = w.getReader();
QueryUtils.check(random(), cq, newSearcher(reader2));
reader2.close();
} finally {
reader.close();
wrapper.close();