|
18 | 18 | import org.opensearch.neuralsearch.util.prune.PruneUtils; |
19 | 19 | import org.opensearch.search.builder.SearchSourceBuilder; |
20 | 20 | import org.opensearch.search.rescore.QueryRescorerBuilder; |
| 21 | +import org.opensearch.search.sort.ScoreSortBuilder; |
| 22 | +import org.opensearch.search.sort.SortBuilders; |
| 23 | +import org.opensearch.search.sort.SortOrder; |
21 | 24 | import org.opensearch.test.OpenSearchTestCase; |
22 | 25 |
|
23 | 26 | import java.util.Collections; |
@@ -256,6 +259,64 @@ public void testProcessRequest_whenTwoPhaseEnabledWithNeuralQueryNonSparseEmbedd |
256 | 259 | assertNull(searchRequest.source().rescores()); |
257 | 260 | } |
258 | 261 |
|
| 262 | + public void testProcessRequest_whenSortByField_thenSkipRescore() throws Exception { |
| 263 | + NeuralSparseTwoPhaseProcessor.Factory factory = new NeuralSparseTwoPhaseProcessor.Factory(); |
| 264 | + NeuralSparseQueryBuilder neuralQueryBuilder = new NeuralSparseQueryBuilder(); |
| 265 | + SearchRequest searchRequest = new SearchRequest(); |
| 266 | + searchRequest.source( |
| 267 | + new SearchSourceBuilder().query(neuralQueryBuilder).sort(SortBuilders.fieldSort("entityId").order(SortOrder.ASC)) |
| 268 | + ); |
| 269 | + NeuralSparseTwoPhaseProcessor processor = createTestProcessor(factory, 0.5f, true, 4.0f, 10000); |
| 270 | + processor.processRequest(searchRequest); |
| 271 | + assertNull(searchRequest.source().rescores()); |
| 272 | + } |
| 273 | + |
| 274 | + public void testProcessRequest_whenSortByScoreDescAndField_thenSkipRescore() throws Exception { |
| 275 | + NeuralSparseTwoPhaseProcessor.Factory factory = new NeuralSparseTwoPhaseProcessor.Factory(); |
| 276 | + NeuralSparseQueryBuilder neuralQueryBuilder = new NeuralSparseQueryBuilder(); |
| 277 | + SearchRequest searchRequest = new SearchRequest(); |
| 278 | + searchRequest.source( |
| 279 | + new SearchSourceBuilder().query(neuralQueryBuilder) |
| 280 | + .sort(new ScoreSortBuilder()) |
| 281 | + .sort(SortBuilders.fieldSort("entityId").order(SortOrder.ASC)) |
| 282 | + ); |
| 283 | + NeuralSparseTwoPhaseProcessor processor = createTestProcessor(factory, 0.5f, true, 4.0f, 10000); |
| 284 | + processor.processRequest(searchRequest); |
| 285 | + assertNull(searchRequest.source().rescores()); |
| 286 | + } |
| 287 | + |
| 288 | + public void testProcessRequest_whenSortByScoreDescOnly_thenAddRescore() throws Exception { |
| 289 | + NeuralSparseTwoPhaseProcessor.Factory factory = new NeuralSparseTwoPhaseProcessor.Factory(); |
| 290 | + NeuralSparseQueryBuilder neuralQueryBuilder = new NeuralSparseQueryBuilder(); |
| 291 | + SearchRequest searchRequest = new SearchRequest(); |
| 292 | + searchRequest.source(new SearchSourceBuilder().query(neuralQueryBuilder).sort(new ScoreSortBuilder())); |
| 293 | + NeuralSparseTwoPhaseProcessor processor = createTestProcessor(factory, 0.5f, true, 4.0f, 10000); |
| 294 | + processor.processRequest(searchRequest); |
| 295 | + assertNotNull(searchRequest.source().rescores()); |
| 296 | + } |
| 297 | + |
| 298 | + public void testProcessRequest_whenSortByScoreAsc_thenSkipRescore() throws Exception { |
| 299 | + NeuralSparseTwoPhaseProcessor.Factory factory = new NeuralSparseTwoPhaseProcessor.Factory(); |
| 300 | + NeuralSparseQueryBuilder neuralQueryBuilder = new NeuralSparseQueryBuilder(); |
| 301 | + SearchRequest searchRequest = new SearchRequest(); |
| 302 | + searchRequest.source(new SearchSourceBuilder().query(neuralQueryBuilder).sort(new ScoreSortBuilder().order(SortOrder.ASC))); |
| 303 | + NeuralSparseTwoPhaseProcessor processor = createTestProcessor(factory, 0.5f, true, 4.0f, 10000); |
| 304 | + processor.processRequest(searchRequest); |
| 305 | + assertNull(searchRequest.source().rescores()); |
| 306 | + } |
| 307 | + |
| 308 | + public void testProcessRequest_whenSortByScoreDescWithTrackScores_thenAddRescore() throws Exception { |
| 309 | + NeuralSparseTwoPhaseProcessor.Factory factory = new NeuralSparseTwoPhaseProcessor.Factory(); |
| 310 | + NeuralSparseQueryBuilder neuralQueryBuilder = new NeuralSparseQueryBuilder(); |
| 311 | + SearchRequest searchRequest = new SearchRequest(); |
| 312 | + searchRequest.source( |
| 313 | + new SearchSourceBuilder().query(neuralQueryBuilder).sort(new ScoreSortBuilder()).trackScores(true) |
| 314 | + ); |
| 315 | + NeuralSparseTwoPhaseProcessor processor = createTestProcessor(factory, 0.5f, true, 4.0f, 10000); |
| 316 | + processor.processRequest(searchRequest); |
| 317 | + assertNotNull(searchRequest.source().rescores()); |
| 318 | + } |
| 319 | + |
259 | 320 | public void testType() throws Exception { |
260 | 321 | NeuralSparseTwoPhaseProcessor.Factory factory = new NeuralSparseTwoPhaseProcessor.Factory(); |
261 | 322 | NeuralSparseTwoPhaseProcessor processor = createTestProcessor(factory); |
|
0 commit comments