Skip to content

Commit 04736b7

Browse files
committed
optimize query facet to extract filter from constant_score queries automatically
1 parent 9eaffb2 commit 04736b7

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

modules/elasticsearch/src/main/java/org/elasticsearch/search/facet/query/QueryFacetCollector.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
package org.elasticsearch.search.facet.query;
2121

2222
import org.apache.lucene.index.IndexReader;
23-
import org.apache.lucene.search.Filter;
24-
import org.apache.lucene.search.FilteredQuery;
25-
import org.apache.lucene.search.Query;
26-
import org.apache.lucene.search.QueryWrapperFilter;
23+
import org.apache.lucene.search.*;
2724
import org.elasticsearch.common.lucene.docset.DocSet;
2825
import org.elasticsearch.common.lucene.docset.DocSets;
2926
import org.elasticsearch.common.lucene.search.Queries;
@@ -50,7 +47,7 @@ public QueryFacetCollector(String facetName, Query query, FilterCache filterCach
5047
if (possibleFilter != null) {
5148
this.filter = possibleFilter;
5249
} else {
53-
this.filter = new QueryWrapperFilter(query);
50+
this.filter = filterCache.weakCache(new QueryWrapperFilter(query));
5451
}
5552
}
5653

@@ -77,6 +74,10 @@ private Filter extractFilterIfApplicable(Query query) {
7774
if (Queries.isMatchAllQuery(fQuery.getQuery())) {
7875
return fQuery.getFilter();
7976
}
77+
} else if (query instanceof DeletionAwareConstantScoreQuery) {
78+
return ((DeletionAwareConstantScoreQuery) query).getFilter();
79+
} else if (query instanceof ConstantScoreQuery) {
80+
return ((ConstantScoreQuery) query).getFilter();
8081
}
8182
return null;
8283
}

0 commit comments

Comments
 (0)