|
32 | 32 | import org.elasticsearch.index.mapper.MapperService;
|
33 | 33 | import org.elasticsearch.index.mapper.MapperServiceTestCase;
|
34 | 34 | import org.elasticsearch.index.mapper.SourceToParse;
|
| 35 | +import org.elasticsearch.index.query.BoolQueryBuilder; |
| 36 | +import org.elasticsearch.index.query.MatchAllQueryBuilder; |
35 | 37 | import org.elasticsearch.index.query.NestedQueryBuilder;
|
36 | 38 | import org.elasticsearch.index.query.QueryBuilder;
|
37 | 39 | import org.elasticsearch.index.shard.ShardId;
|
@@ -170,6 +172,34 @@ public void testSparseVector() throws Exception {
|
170 | 172 | );
|
171 | 173 | }
|
172 | 174 |
|
| 175 | + @SuppressWarnings("unchecked") |
| 176 | + public void testNoSemanticField() throws Exception { |
| 177 | + var mapperService = createDefaultMapperService(useLegacyFormat); |
| 178 | + Map<String, Object> queryMap = (Map<String, Object>) queries.get("sparse_vector_1"); |
| 179 | + List<WeightedToken> tokens = readSparseVector(queryMap.get("embeddings")); |
| 180 | + var fieldType = (SemanticTextFieldMapper.SemanticTextFieldType) mapperService.mappingLookup().getFieldType(SEMANTIC_FIELD_ELSER); |
| 181 | + SparseVectorQueryBuilder sparseQuery = new SparseVectorQueryBuilder( |
| 182 | + fieldType.getEmbeddingsField().fullPath(), |
| 183 | + tokens, |
| 184 | + null, |
| 185 | + null, |
| 186 | + null, |
| 187 | + null |
| 188 | + ); |
| 189 | + var query = new BoolQueryBuilder().should(sparseQuery).should(new MatchAllQueryBuilder()); |
| 190 | + var shardRequest = createShardSearchRequest(query); |
| 191 | + var sourceToParse = new SourceToParse("0", new BytesArray("{}"), XContentType.JSON); |
| 192 | + assertHighlightOneDoc( |
| 193 | + mapperService, |
| 194 | + shardRequest, |
| 195 | + sourceToParse, |
| 196 | + SEMANTIC_FIELD_ELSER, |
| 197 | + 10, |
| 198 | + HighlightBuilder.Order.SCORE, |
| 199 | + new String[0] |
| 200 | + ); |
| 201 | + } |
| 202 | + |
173 | 203 | private MapperService createDefaultMapperService(boolean useLegacyFormat) throws IOException {
|
174 | 204 | var mappings = Streams.readFully(SemanticTextHighlighterTests.class.getResourceAsStream("mappings.json"));
|
175 | 205 | var settings = Settings.builder()
|
@@ -264,9 +294,13 @@ private void assertHighlightOneDoc(
|
264 | 294 | new HashMap<>()
|
265 | 295 | );
|
266 | 296 | var result = highlighter.highlight(context);
|
267 |
| - assertThat(result.fragments().length, equalTo(expectedPassages.length)); |
268 |
| - for (int i = 0; i < result.fragments().length; i++) { |
269 |
| - assertThat(result.fragments()[i].string(), equalTo(expectedPassages[i])); |
| 297 | + if (result == null) { |
| 298 | + assertThat(expectedPassages.length, equalTo(0)); |
| 299 | + } else { |
| 300 | + assertThat(result.fragments().length, equalTo(expectedPassages.length)); |
| 301 | + for (int i = 0; i < result.fragments().length; i++) { |
| 302 | + assertThat(result.fragments()[i].string(), equalTo(expectedPassages[i])); |
| 303 | + } |
270 | 304 | }
|
271 | 305 | }
|
272 | 306 | } finally {
|
|
0 commit comments