|
44 | 44 | import org.apache.lucene.search.Collector;
|
45 | 45 | import org.apache.lucene.search.CollectorManager;
|
46 | 46 | import org.apache.lucene.search.ConjunctionUtils;
|
| 47 | +import org.apache.lucene.search.ConstantScoreQuery; |
47 | 48 | import org.apache.lucene.search.DocIdSetIterator;
|
48 | 49 | import org.apache.lucene.search.Explanation;
|
49 | 50 | import org.apache.lucene.search.IndexSearcher;
|
@@ -257,8 +258,15 @@ public void search(
|
257 | 258 |
|
258 | 259 | @Override
|
259 | 260 | public void search(Query query, Collector collector) throws IOException {
|
260 |
| - super.search(query, collector); |
261 |
| - searchContext.bucketCollectorProcessor().processPostCollection(collector); |
| 261 | + // TODO : Remove when switching to use the @org.apache.lucene.search.IndexSearcher#search(Query, CollectorManager) variant from |
| 262 | + // @org.opensearch.search.query.QueryPhase#searchWithCollector which then calls the overridden |
| 263 | + // search(LeafReaderContextPartition[] partitions, Weight weight, Collector collector) |
| 264 | + query = collector.scoreMode().needsScores() ? rewrite(query) : rewrite(new ConstantScoreQuery(query)); |
| 265 | + Weight weight = createWeight(query, collector.scoreMode(), 1); |
| 266 | + LeafReaderContextPartition[] partitions = (getLeafContexts() == null) |
| 267 | + ? new LeafReaderContextPartition[0] |
| 268 | + : getLeafContexts().stream().map(LeafReaderContextPartition::createForEntireSegment).toArray(LeafReaderContextPartition[]::new); |
| 269 | + search(partitions, weight, collector); |
262 | 270 | }
|
263 | 271 |
|
264 | 272 | public void search(
|
@@ -297,6 +305,7 @@ protected void search(LeafReaderContextPartition[] partitions, Weight weight, Co
|
297 | 305 | searchLeaf(partition.ctx, partition.minDocId, partition.maxDocId, weight, collector);
|
298 | 306 | }
|
299 | 307 | }
|
| 308 | + // TODO : Make this a responsibility for the callers rather than implicitly getting it done here ? |
300 | 309 | searchContext.bucketCollectorProcessor().processPostCollection(collector);
|
301 | 310 | } catch (Throwable t) {
|
302 | 311 | searchContext.indexShard().getSearchOperationListener().onFailedSliceExecution(searchContext);
|
|
0 commit comments