|
24 | 24 | import java.util.HashMap;
|
25 | 25 | import java.util.List;
|
26 | 26 | import java.util.Map;
|
| 27 | +import java.util.Objects; |
27 | 28 | import java.util.Optional;
|
28 | 29 |
|
29 | 30 | import org.elasticsearch.action.DocWriteRequest;
|
|
37 | 38 | import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequestBuilder;
|
38 | 39 | import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
39 | 40 | import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
40 |
| -import org.elasticsearch.action.admin.indices.settings.get.GetSettingsResponse; |
41 | 41 | import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
|
42 | 42 | import org.elasticsearch.action.bulk.BulkRequest;
|
43 | 43 | import org.elasticsearch.action.bulk.BulkRequestBuilder;
|
|
65 | 65 | import org.elasticsearch.client.indices.PutIndexTemplateRequest;
|
66 | 66 | import org.elasticsearch.client.indices.PutMappingRequest;
|
67 | 67 | import org.elasticsearch.common.geo.GeoDistance;
|
68 |
| -import org.elasticsearch.common.settings.Settings; |
69 | 68 | import org.elasticsearch.common.unit.DistanceUnit;
|
70 | 69 | import org.elasticsearch.common.unit.TimeValue;
|
71 | 70 | import org.elasticsearch.index.VersionType;
|
|
83 | 82 | import org.elasticsearch.search.builder.SearchSourceBuilder;
|
84 | 83 | import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
|
85 | 84 | import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
| 85 | +import org.elasticsearch.search.rescore.QueryRescoreMode; |
| 86 | +import org.elasticsearch.search.rescore.QueryRescorerBuilder; |
86 | 87 | import org.elasticsearch.search.sort.FieldSortBuilder;
|
87 | 88 | import org.elasticsearch.search.sort.GeoDistanceSortBuilder;
|
88 | 89 | import org.elasticsearch.search.sort.ScoreSortBuilder;
|
|
106 | 107 | import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
|
107 | 108 | import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
108 | 109 | import org.springframework.data.elasticsearch.core.query.*;
|
| 110 | +import org.springframework.data.elasticsearch.core.query.RescorerQuery.ScoreMode; |
109 | 111 | import org.springframework.data.mapping.context.MappingContext;
|
110 | 112 | import org.springframework.lang.Nullable;
|
111 | 113 | import org.springframework.util.Assert;
|
|
119 | 121 | * @author Roman Puchkovskiy
|
120 | 122 | * @author Subhobrata Dey
|
121 | 123 | * @author Farid Faoudi
|
| 124 | + * @author Peer Mueller |
122 | 125 | * @since 4.0
|
123 | 126 | */
|
124 | 127 | class RequestFactory {
|
@@ -1050,6 +1053,9 @@ private SearchRequest prepareSearchRequest(Query query, @Nullable Class<?> clazz
|
1050 | 1053 | sourceBuilder.searchAfter(query.getSearchAfter().toArray());
|
1051 | 1054 | }
|
1052 | 1055 |
|
| 1056 | + query.getRescorerQueries().forEach(rescorer -> sourceBuilder.addRescorer( |
| 1057 | + getQueryRescorerBuilder(rescorer))); |
| 1058 | + |
1053 | 1059 | request.source(sourceBuilder);
|
1054 | 1060 | return request;
|
1055 | 1061 | }
|
@@ -1136,6 +1142,9 @@ private SearchRequestBuilder prepareSearchRequestBuilder(Query query, Client cli
|
1136 | 1142 | searchRequestBuilder.searchAfter(query.getSearchAfter().toArray());
|
1137 | 1143 | }
|
1138 | 1144 |
|
| 1145 | + query.getRescorerQueries().forEach(rescorer -> searchRequestBuilder.addRescorer( |
| 1146 | + getQueryRescorerBuilder(rescorer))); |
| 1147 | + |
1139 | 1148 | return searchRequestBuilder;
|
1140 | 1149 | }
|
1141 | 1150 |
|
@@ -1260,6 +1269,30 @@ private SortBuilder<?> getSortBuilder(Sort.Order order, @Nullable ElasticsearchP
|
1260 | 1269 | }
|
1261 | 1270 | }
|
1262 | 1271 | }
|
| 1272 | + |
| 1273 | + private QueryRescorerBuilder getQueryRescorerBuilder(RescorerQuery rescorerQuery) { |
| 1274 | + |
| 1275 | + QueryRescorerBuilder builder = new QueryRescorerBuilder(Objects.requireNonNull(getQuery(rescorerQuery.getQuery()))); |
| 1276 | + |
| 1277 | + if (rescorerQuery.getScoreMode() != ScoreMode.Default) { |
| 1278 | + builder.setScoreMode(QueryRescoreMode.valueOf(rescorerQuery.getScoreMode().name())); |
| 1279 | + } |
| 1280 | + |
| 1281 | + if (rescorerQuery.getQueryWeight() != null) { |
| 1282 | + builder.setQueryWeight(rescorerQuery.getQueryWeight()); |
| 1283 | + } |
| 1284 | + |
| 1285 | + if (rescorerQuery.getRescoreQueryWeight() != null) { |
| 1286 | + builder.setRescoreQueryWeight(rescorerQuery.getRescoreQueryWeight()); |
| 1287 | + } |
| 1288 | + |
| 1289 | + if (rescorerQuery.getWindowSize() != null) { |
| 1290 | + builder.windowSize(rescorerQuery.getWindowSize()); |
| 1291 | + } |
| 1292 | + |
| 1293 | + return builder; |
| 1294 | + |
| 1295 | + } |
1263 | 1296 | // endregion
|
1264 | 1297 |
|
1265 | 1298 | // region update
|
|
0 commit comments