|
@@ -13,10 +13,12 @@ import org.apache.lucene.document.Field;
|
|
|
import org.apache.lucene.document.StringField;
|
|
|
import org.apache.lucene.index.IndexReader;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
+import org.apache.lucene.search.CollectorManager;
|
|
|
import org.apache.lucene.search.IndexSearcher;
|
|
|
import org.apache.lucene.search.MatchAllDocsQuery;
|
|
|
import org.apache.lucene.search.ScoreMode;
|
|
|
import org.apache.lucene.search.TermQuery;
|
|
|
+import org.apache.lucene.search.TopDocs;
|
|
|
import org.apache.lucene.search.TopScoreDocCollector;
|
|
|
import org.apache.lucene.search.TotalHitCountCollector;
|
|
|
import org.apache.lucene.search.Weight;
|
|
@@ -39,7 +41,7 @@ public class FilteredCollectorTests extends ESTestCase {
|
|
|
super.setUp();
|
|
|
directory = newDirectory();
|
|
|
RandomIndexWriter writer = new RandomIndexWriter(random(), directory, newIndexWriterConfig());
|
|
|
- numDocs = randomIntBetween(10, 100);
|
|
|
+ numDocs = randomIntBetween(900, 1000);
|
|
|
for (int i = 0; i < numDocs; i++) {
|
|
|
Document doc = new Document();
|
|
|
doc.add(new StringField("field1", "value", Field.Store.NO));
|
|
@@ -62,19 +64,19 @@ public class FilteredCollectorTests extends ESTestCase {
|
|
|
|
|
|
public void testFiltering() throws IOException {
|
|
|
{
|
|
|
- TopScoreDocCollector topScoreDocCollector = TopScoreDocCollector.create(1, 100);
|
|
|
+ TopScoreDocCollector topScoreDocCollector = TopScoreDocCollector.create(1, 1000);
|
|
|
searcher.search(new MatchAllDocsQuery(), topScoreDocCollector);
|
|
|
assertEquals(numDocs, topScoreDocCollector.topDocs().totalHits.value);
|
|
|
}
|
|
|
{
|
|
|
- TopScoreDocCollector topScoreDocCollector = TopScoreDocCollector.create(1, 100);
|
|
|
+ TopScoreDocCollector topScoreDocCollector = TopScoreDocCollector.create(1, 1000);
|
|
|
TermQuery termQuery = new TermQuery(new Term("field2", "value"));
|
|
|
Weight filterWeight = termQuery.createWeight(searcher, ScoreMode.TOP_DOCS, 1f);
|
|
|
searcher.search(new MatchAllDocsQuery(), new FilteredCollector(topScoreDocCollector, filterWeight));
|
|
|
assertEquals(1, topScoreDocCollector.topDocs().totalHits.value);
|
|
|
}
|
|
|
{
|
|
|
- TopScoreDocCollector topScoreDocCollector = TopScoreDocCollector.create(1, 100);
|
|
|
+ TopScoreDocCollector topScoreDocCollector = TopScoreDocCollector.create(1, 1000);
|
|
|
TermQuery termQuery = new TermQuery(new Term("field1", "value"));
|
|
|
Weight filterWeight = termQuery.createWeight(searcher, ScoreMode.TOP_DOCS, 1f);
|
|
|
searcher.search(new MatchAllDocsQuery(), new FilteredCollector(topScoreDocCollector, filterWeight));
|
|
@@ -96,4 +98,28 @@ public class FilteredCollectorTests extends ESTestCase {
|
|
|
assertEquals(1, totalHitCountCollector.getTotalHits());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void testManager() throws IOException {
|
|
|
+ {
|
|
|
+ CollectorManager<TopScoreDocCollector, TopDocs> topDocsManager = TopScoreDocCollector.createSharedManager(1, null, 1000);
|
|
|
+ TopDocs topDocs = searcher.search(new MatchAllDocsQuery(), topDocsManager);
|
|
|
+ assertEquals(numDocs, topDocs.totalHits.value);
|
|
|
+ }
|
|
|
+ {
|
|
|
+ CollectorManager<TopScoreDocCollector, TopDocs> topDocsManager = TopScoreDocCollector.createSharedManager(1, null, 1000);
|
|
|
+ TermQuery termQuery = new TermQuery(new Term("field2", "value"));
|
|
|
+ Weight filterWeight = termQuery.createWeight(searcher, ScoreMode.TOP_DOCS, 1f);
|
|
|
+ CollectorManager<FilteredCollector, TopDocs> filteredManager = FilteredCollector.createManager(topDocsManager, filterWeight);
|
|
|
+ TopDocs topDocs = searcher.search(new MatchAllDocsQuery(), filteredManager);
|
|
|
+ assertEquals(1, topDocs.totalHits.value);
|
|
|
+ }
|
|
|
+ {
|
|
|
+ CollectorManager<TopScoreDocCollector, TopDocs> topDocsManager = TopScoreDocCollector.createSharedManager(1, null, 1000);
|
|
|
+ TermQuery termQuery = new TermQuery(new Term("field1", "value"));
|
|
|
+ Weight filterWeight = termQuery.createWeight(searcher, ScoreMode.TOP_DOCS, 1f);
|
|
|
+ CollectorManager<FilteredCollector, TopDocs> filteredManager = FilteredCollector.createManager(topDocsManager, filterWeight);
|
|
|
+ TopDocs topDocs = searcher.search(new MatchAllDocsQuery(), filteredManager);
|
|
|
+ assertEquals(numDocs, topDocs.totalHits.value);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|