File tree Expand file tree Collapse file tree 2 files changed +22
-12
lines changed
modules/elasticsearch/src/main/java/org/elasticsearch/search Expand file tree Collapse file tree 2 files changed +22
-12
lines changed Original file line number Diff line number Diff line change @@ -133,16 +133,26 @@ public static class Encoders {
133
133
// QueryScorer uses WeightedSpanTermExtractor to extract terms, but we can't really plug into
134
134
// it, so, we hack here (and really only support top level queries)
135
135
Query query = context .parsedQuery ().query ();
136
- if (query instanceof FunctionScoreQuery ) {
137
- query = ((FunctionScoreQuery ) query ).getSubQuery ();
138
- } else if (query instanceof FiltersFunctionScoreQuery ) {
139
- query = ((FiltersFunctionScoreQuery ) query ).getSubQuery ();
140
- } else if (query instanceof ConstantScoreQuery ) {
141
- ConstantScoreQuery q = (ConstantScoreQuery ) query ;
142
- if (q .getQuery () != null ) {
143
- query = q .getQuery ();
136
+ while (true ) {
137
+ boolean extracted = false ;
138
+ if (query instanceof FunctionScoreQuery ) {
139
+ query = ((FunctionScoreQuery ) query ).getSubQuery ();
140
+ extracted = true ;
141
+ } else if (query instanceof FiltersFunctionScoreQuery ) {
142
+ query = ((FiltersFunctionScoreQuery ) query ).getSubQuery ();
143
+ extracted = true ;
144
+ } else if (query instanceof ConstantScoreQuery ) {
145
+ ConstantScoreQuery q = (ConstantScoreQuery ) query ;
146
+ if (q .getQuery () != null ) {
147
+ query = q .getQuery ();
148
+ extracted = true ;
149
+ }
150
+ }
151
+ if (!extracted ) {
152
+ break ;
144
153
}
145
154
}
155
+
146
156
QueryScorer queryScorer = new QueryScorer (query , null );
147
157
queryScorer .setExpandMultiTermQuery (true );
148
158
Fragmenter fragmenter ;
Original file line number Diff line number Diff line change @@ -85,6 +85,10 @@ public class QueryPhase implements SearchPhase {
85
85
if (context .queryBoost () != 1.0f ) {
86
86
context .parsedQuery (new ParsedQuery (new FunctionScoreQuery (context .query (), new BoostScoreFunction (context .queryBoost ())), context .parsedQuery ()));
87
87
}
88
+ Filter searchFilter = context .mapperService ().searchFilter (context .types ());
89
+ if (searchFilter != null ) {
90
+ context .parsedQuery (new ParsedQuery (new FilteredQuery (context .query (), context .filterCache ().cache (searchFilter )), context .parsedQuery ()));
91
+ }
88
92
facetPhase .preProcess (context );
89
93
}
90
94
@@ -169,10 +173,6 @@ public void execute(SearchContext searchContext) throws QueryPhaseExecutionExcep
169
173
searchContext .queryResult ().size (searchContext .size ());
170
174
171
175
Query query = searchContext .query ();
172
- Filter searchFilter = searchContext .mapperService ().searchFilter (searchContext .types ());
173
- if (searchFilter != null ) {
174
- query = new FilteredQuery (query , searchContext .filterCache ().cache (searchFilter ));
175
- }
176
176
177
177
TopDocs topDocs ;
178
178
int numDocs = searchContext .from () + searchContext .size ();
You can’t perform that action at this time.
0 commit comments