61
61
import static org .opensearch .search .SearchService .CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING ;
62
62
import static org .opensearch .test .hamcrest .OpenSearchAssertions .assertHitCount ;
63
63
import static org .hamcrest .Matchers .equalTo ;
64
+ import static org .hamcrest .Matchers .greaterThan ;
64
65
import static org .hamcrest .Matchers .hasItemInArray ;
66
+ import static org .hamcrest .Matchers .hasKey ;
65
67
66
68
public class MatchedQueriesIT extends ParameterizedStaticSettingsOpenSearchIntegTestCase {
67
69
@@ -95,15 +97,18 @@ public void testSimpleMatchedQueryFromFilteredQuery() throws Exception {
95
97
.should (rangeQuery ("number" ).gte (2 ).queryName ("test2" ))
96
98
)
97
99
)
100
+ .setIncludeNamedQueriesScore (true )
98
101
.get ();
99
102
assertHitCount (searchResponse , 3L );
100
103
for (SearchHit hit : searchResponse .getHits ()) {
101
104
if (hit .getId ().equals ("3" ) || hit .getId ().equals ("2" )) {
102
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
103
- assertThat (hit .getMatchedQueries (), hasItemInArray ("test2" ));
105
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
106
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("test2" ));
107
+ assertThat (hit .getMatchedQueryScore ("test2" ), equalTo (1f ));
104
108
} else if (hit .getId ().equals ("1" )) {
105
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
106
- assertThat (hit .getMatchedQueries (), hasItemInArray ("test1" ));
109
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
110
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("test1" ));
111
+ assertThat (hit .getMatchedQueryScore ("test1" ), equalTo (1f ));
107
112
} else {
108
113
fail ("Unexpected document returned with id " + hit .getId ());
109
114
}
@@ -113,15 +118,18 @@ public void testSimpleMatchedQueryFromFilteredQuery() throws Exception {
113
118
.setQuery (
114
119
boolQuery ().should (rangeQuery ("number" ).lte (2 ).queryName ("test1" )).should (rangeQuery ("number" ).gt (2 ).queryName ("test2" ))
115
120
)
121
+ .setIncludeNamedQueriesScore (true )
116
122
.get ();
117
123
assertHitCount (searchResponse , 3L );
118
124
for (SearchHit hit : searchResponse .getHits ()) {
119
125
if (hit .getId ().equals ("1" ) || hit .getId ().equals ("2" )) {
120
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
121
- assertThat (hit .getMatchedQueries (), hasItemInArray ("test1" ));
126
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
127
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("test1" ));
128
+ assertThat (hit .getMatchedQueryScore ("test1" ), equalTo (1f ));
122
129
} else if (hit .getId ().equals ("3" )) {
123
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
124
- assertThat (hit .getMatchedQueries (), hasItemInArray ("test2" ));
130
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
131
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("test2" ));
132
+ assertThat (hit .getMatchedQueryScore ("test2" ), equalTo (1f ));
125
133
} else {
126
134
fail ("Unexpected document returned with id " + hit .getId ());
127
135
}
@@ -147,12 +155,15 @@ public void testSimpleMatchedQueryFromTopLevelFilter() throws Exception {
147
155
assertHitCount (searchResponse , 3L );
148
156
for (SearchHit hit : searchResponse .getHits ()) {
149
157
if (hit .getId ().equals ("1" )) {
150
- assertThat (hit .getMatchedQueries ().length , equalTo (2 ));
151
- assertThat (hit .getMatchedQueries (), hasItemInArray ("name" ));
152
- assertThat (hit .getMatchedQueries (), hasItemInArray ("title" ));
158
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (2 ));
159
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("name" ));
160
+ assertThat (hit .getMatchedQueryScore ("name" ), greaterThan (0f ));
161
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("title" ));
162
+ assertThat (hit .getMatchedQueryScore ("title" ), greaterThan (0f ));
153
163
} else if (hit .getId ().equals ("2" ) || hit .getId ().equals ("3" )) {
154
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
155
- assertThat (hit .getMatchedQueries (), hasItemInArray ("name" ));
164
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
165
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("name" ));
166
+ assertThat (hit .getMatchedQueryScore ("name" ), greaterThan (0f ));
156
167
} else {
157
168
fail ("Unexpected document returned with id " + hit .getId ());
158
169
}
@@ -168,12 +179,15 @@ public void testSimpleMatchedQueryFromTopLevelFilter() throws Exception {
168
179
assertHitCount (searchResponse , 3L );
169
180
for (SearchHit hit : searchResponse .getHits ()) {
170
181
if (hit .getId ().equals ("1" )) {
171
- assertThat (hit .getMatchedQueries ().length , equalTo (2 ));
172
- assertThat (hit .getMatchedQueries (), hasItemInArray ("name" ));
173
- assertThat (hit .getMatchedQueries (), hasItemInArray ("title" ));
182
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (2 ));
183
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("name" ));
184
+ assertThat (hit .getMatchedQueryScore ("name" ), greaterThan (0f ));
185
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("title" ));
186
+ assertThat (hit .getMatchedQueryScore ("title" ), greaterThan (0f ));
174
187
} else if (hit .getId ().equals ("2" ) || hit .getId ().equals ("3" )) {
175
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
176
- assertThat (hit .getMatchedQueries (), hasItemInArray ("name" ));
188
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
189
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("name" ));
190
+ assertThat (hit .getMatchedQueryScore ("name" ), greaterThan (0f ));
177
191
} else {
178
192
fail ("Unexpected document returned with id " + hit .getId ());
179
193
}
@@ -197,9 +211,11 @@ public void testSimpleMatchedQueryFromTopLevelFilterAndFilteredQuery() throws Ex
197
211
assertHitCount (searchResponse , 3L );
198
212
for (SearchHit hit : searchResponse .getHits ()) {
199
213
if (hit .getId ().equals ("1" ) || hit .getId ().equals ("2" ) || hit .getId ().equals ("3" )) {
200
- assertThat (hit .getMatchedQueries ().length , equalTo (2 ));
201
- assertThat (hit .getMatchedQueries (), hasItemInArray ("name" ));
202
- assertThat (hit .getMatchedQueries (), hasItemInArray ("title" ));
214
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (2 ));
215
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("name" ));
216
+ assertThat (hit .getMatchedQueryScore ("name" ), greaterThan (0f ));
217
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("title" ));
218
+ assertThat (hit .getMatchedQueryScore ("title" ), greaterThan (0f ));
203
219
} else {
204
220
fail ("Unexpected document returned with id " + hit .getId ());
205
221
}
@@ -231,13 +247,15 @@ public void testRegExpQuerySupportsName() throws InterruptedException {
231
247
232
248
SearchResponse searchResponse = client ().prepareSearch ()
233
249
.setQuery (QueryBuilders .regexpQuery ("title" , "title1" ).queryName ("regex" ))
250
+ .setIncludeNamedQueriesScore (true )
234
251
.get ();
235
252
assertHitCount (searchResponse , 1L );
236
253
237
254
for (SearchHit hit : searchResponse .getHits ()) {
238
255
if (hit .getId ().equals ("1" )) {
239
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
240
- assertThat (hit .getMatchedQueries (), hasItemInArray ("regex" ));
256
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
257
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("regex" ));
258
+ assertThat (hit .getMatchedQueryScore ("regex" ), equalTo (1f ));
241
259
} else {
242
260
fail ("Unexpected document returned with id " + hit .getId ());
243
261
}
@@ -252,15 +270,17 @@ public void testPrefixQuerySupportsName() throws InterruptedException {
252
270
refresh ();
253
271
indexRandomForConcurrentSearch ("test1" );
254
272
255
- SearchResponse searchResponse = client ().prepareSearch ()
273
+ var query = client ().prepareSearch ()
256
274
.setQuery (QueryBuilders .prefixQuery ("title" , "title" ).queryName ("prefix" ))
257
- .get ();
275
+ .setIncludeNamedQueriesScore (true );
276
+ var searchResponse = query .get ();
258
277
assertHitCount (searchResponse , 1L );
259
278
260
279
for (SearchHit hit : searchResponse .getHits ()) {
261
280
if (hit .getId ().equals ("1" )) {
262
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
263
- assertThat (hit .getMatchedQueries (), hasItemInArray ("prefix" ));
281
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
282
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("prefix" ));
283
+ assertThat (hit .getMatchedQueryScore ("prefix" ), equalTo (1f ));
264
284
} else {
265
285
fail ("Unexpected document returned with id " + hit .getId ());
266
286
}
@@ -282,8 +302,9 @@ public void testFuzzyQuerySupportsName() throws InterruptedException {
282
302
283
303
for (SearchHit hit : searchResponse .getHits ()) {
284
304
if (hit .getId ().equals ("1" )) {
285
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
286
- assertThat (hit .getMatchedQueries (), hasItemInArray ("fuzzy" ));
305
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
306
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("fuzzy" ));
307
+ assertThat (hit .getMatchedQueryScore ("fuzzy" ), greaterThan (0f ));
287
308
} else {
288
309
fail ("Unexpected document returned with id " + hit .getId ());
289
310
}
@@ -300,13 +321,15 @@ public void testWildcardQuerySupportsName() throws InterruptedException {
300
321
301
322
SearchResponse searchResponse = client ().prepareSearch ()
302
323
.setQuery (QueryBuilders .wildcardQuery ("title" , "titl*" ).queryName ("wildcard" ))
324
+ .setIncludeNamedQueriesScore (true )
303
325
.get ();
304
326
assertHitCount (searchResponse , 1L );
305
327
306
328
for (SearchHit hit : searchResponse .getHits ()) {
307
329
if (hit .getId ().equals ("1" )) {
308
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
309
- assertThat (hit .getMatchedQueries (), hasItemInArray ("wildcard" ));
330
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
331
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("wildcard" ));
332
+ assertThat (hit .getMatchedQueryScore ("wildcard" ), equalTo (1f ));
310
333
} else {
311
334
fail ("Unexpected document returned with id " + hit .getId ());
312
335
}
@@ -328,8 +351,9 @@ public void testSpanFirstQuerySupportsName() throws InterruptedException {
328
351
329
352
for (SearchHit hit : searchResponse .getHits ()) {
330
353
if (hit .getId ().equals ("1" )) {
331
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
332
- assertThat (hit .getMatchedQueries (), hasItemInArray ("span" ));
354
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
355
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("span" ));
356
+ assertThat (hit .getMatchedQueryScore ("span" ), greaterThan (0f ));
333
357
} else {
334
358
fail ("Unexpected document returned with id " + hit .getId ());
335
359
}
@@ -363,11 +387,13 @@ public void testMatchedWithShould() throws Exception {
363
387
assertHitCount (searchResponse , 2L );
364
388
for (SearchHit hit : searchResponse .getHits ()) {
365
389
if (hit .getId ().equals ("1" )) {
366
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
367
- assertThat (hit .getMatchedQueries (), hasItemInArray ("dolor" ));
390
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
391
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("dolor" ));
392
+ assertThat (hit .getMatchedQueryScore ("dolor" ), greaterThan (0f ));
368
393
} else if (hit .getId ().equals ("2" )) {
369
- assertThat (hit .getMatchedQueries ().length , equalTo (1 ));
370
- assertThat (hit .getMatchedQueries (), hasItemInArray ("elit" ));
394
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
395
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("elit" ));
396
+ assertThat (hit .getMatchedQueryScore ("elit" ), greaterThan (0f ));
371
397
} else {
372
398
fail ("Unexpected document returned with id " + hit .getId ());
373
399
}
@@ -391,7 +417,10 @@ public void testMatchedWithWrapperQuery() throws Exception {
391
417
for (QueryBuilder query : queries ) {
392
418
SearchResponse searchResponse = client ().prepareSearch ().setQuery (query ).get ();
393
419
assertHitCount (searchResponse , 1L );
394
- assertThat (searchResponse .getHits ().getAt (0 ).getMatchedQueries ()[0 ], equalTo ("abc" ));
420
+ SearchHit hit = searchResponse .getHits ().getAt (0 );
421
+ assertThat (hit .getMatchedQueriesAndScores ().size (), equalTo (1 ));
422
+ assertThat (hit .getMatchedQueriesAndScores (), hasKey ("abc" ));
423
+ assertThat (hit .getMatchedQueryScore ("abc" ), greaterThan (0f ));
395
424
}
396
425
}
397
426
}
0 commit comments