|
33 | 33 | import org.apache.lucene.search.PointRangeQuery; |
34 | 34 | import org.apache.lucene.search.Query; |
35 | 35 | import org.apache.lucene.search.TermQuery; |
| 36 | +import org.apache.lucene.search.spans.SpanNearQuery; |
| 37 | +import org.apache.lucene.search.spans.SpanOrQuery; |
| 38 | +import org.apache.lucene.search.spans.SpanQuery; |
| 39 | +import org.apache.lucene.search.spans.SpanTermQuery; |
36 | 40 | import org.apache.lucene.util.BytesRef; |
37 | 41 | import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest; |
38 | 42 | import org.elasticsearch.common.ParsingException; |
@@ -463,6 +467,29 @@ public void testAutoGenerateSynonymsPhraseQuery() throws Exception { |
463 | 467 | } |
464 | 468 | } |
465 | 469 |
|
| 470 | + public void testMultiWordSynonymsPhrase() throws Exception { |
| 471 | + final MatchQuery matchQuery = new MatchQuery(createShardContext()); |
| 472 | + matchQuery.setAnalyzer(new MockSynonymAnalyzer()); |
| 473 | + final Query actual = matchQuery.parse(Type.PHRASE, STRING_FIELD_NAME, "guinea pig dogs"); |
| 474 | + Query expected = SpanNearQuery.newOrderedNearQuery(STRING_FIELD_NAME) |
| 475 | + .addClause( |
| 476 | + new SpanOrQuery(new SpanQuery[]{ |
| 477 | + SpanNearQuery.newOrderedNearQuery(STRING_FIELD_NAME) |
| 478 | + .addClause(new SpanTermQuery(new Term(STRING_FIELD_NAME, "guinea"))) |
| 479 | + .addClause(new SpanTermQuery(new Term(STRING_FIELD_NAME, "pig"))) |
| 480 | + .setSlop(0) |
| 481 | + .build(), |
| 482 | + new SpanTermQuery(new Term(STRING_FIELD_NAME, "cavy")) |
| 483 | + }) |
| 484 | + ) |
| 485 | + .addClause(new SpanOrQuery(new SpanQuery[]{ |
| 486 | + new SpanTermQuery(new Term(STRING_FIELD_NAME, "dogs")), |
| 487 | + new SpanTermQuery(new Term(STRING_FIELD_NAME, "dog")) |
| 488 | + })) |
| 489 | + .build(); |
| 490 | + assertEquals(expected, actual); |
| 491 | + } |
| 492 | + |
466 | 493 | public void testMaxBooleanClause() { |
467 | 494 | MatchQuery query = new MatchQuery(createShardContext()); |
468 | 495 | query.setAnalyzer(new MockGraphAnalyzer(createGiantGraph(40))); |
|
0 commit comments