|
24 | 24 | import org.apache.lucene.document.Document; |
25 | 25 | import org.apache.lucene.document.Field; |
26 | 26 | import org.apache.lucene.document.Field.Store; |
| 27 | +import org.apache.lucene.document.FieldType; |
| 28 | +import org.apache.lucene.document.LongPoint; |
27 | 29 | import org.apache.lucene.document.StringField; |
| 30 | +import org.apache.lucene.index.IndexOptions; |
28 | 31 | import org.apache.lucene.index.IndexReader; |
29 | 32 | import org.apache.lucene.index.LeafReaderContext; |
30 | 33 | import org.apache.lucene.index.Term; |
@@ -402,4 +405,40 @@ public void testFilterConstantScore() throws Exception { |
402 | 405 | w.close(); |
403 | 406 | dir.close(); |
404 | 407 | } |
| 408 | + |
| 409 | + public void testCollectNoThresholdWhenOnlyFilter() throws Exception { |
| 410 | + Directory dir = newDirectory(); |
| 411 | + RandomIndexWriter w = new RandomIndexWriter(random(), dir); |
| 412 | + FieldType fieldType = new FieldType(); |
| 413 | + fieldType.setIndexOptions(IndexOptions.DOCS); |
| 414 | + for (int i = 0; i < 50; i++) { |
| 415 | + Document doc = new Document(); |
| 416 | + doc.add(new Field("foo", "bar" + (i % 2), fieldType)); |
| 417 | + doc.add(new LongPoint("field", i % 4)); |
| 418 | + w.addDocument(doc); |
| 419 | + } |
| 420 | + |
| 421 | + IndexReader reader = w.getReader(); |
| 422 | + IndexSearcher searcher = new IndexSearcher(reader); |
| 423 | + searcher.setQueryCache(null); |
| 424 | + |
| 425 | + TermQuery termQuery = new TermQuery(new Term("foo", "bar0")); |
| 426 | + |
| 427 | + BooleanQuery.Builder builder = new BooleanQuery.Builder(); |
| 428 | + builder.add(termQuery, BooleanClause.Occur.FILTER); |
| 429 | + |
| 430 | + Query indexQuery = LongPoint.newRangeQuery("field", 1, Long.MAX_VALUE); |
| 431 | + builder.add(indexQuery, BooleanClause.Occur.FILTER); |
| 432 | + |
| 433 | + int totalHitsThreshold = 7; |
| 434 | + TopScoreDocCollectorManager topScoreDocCollectorManager = |
| 435 | + new TopScoreDocCollectorManager(3, null, totalHitsThreshold); |
| 436 | + TopScoreDocCollector collector = topScoreDocCollectorManager.newCollector(); |
| 437 | + searcher.search(builder.build(), collector); |
| 438 | + assertEquals(totalHitsThreshold + 1, collector.totalHits); |
| 439 | + |
| 440 | + reader.close(); |
| 441 | + w.close(); |
| 442 | + dir.close(); |
| 443 | + } |
405 | 444 | } |
0 commit comments