Skip to content

Commit 864732a

Browse files
Fix fuzziness parsing in multi_match function. Update tests. (#668) (#669)
Signed-off-by: Yury Fridlyand <yuryf@bitquilltech.com> (cherry picked from commit a91c194) Co-authored-by: Yury-Fridlyand <88679692+Yury-Fridlyand@users.noreply.github.com>
1 parent 5f00b9f commit 864732a

6 files changed

Lines changed: 9 additions & 9 deletions

File tree

integ-test/src/test/java/org/opensearch/sql/ppl/RelevanceFunctionIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ public void test_multi_match_all_params() throws IOException {
4242
String query = "SOURCE=" + TEST_INDEX_BEER
4343
+ " | WHERE multi_match(['Body', Tags], 'taste beer', operator='and', analyzer=english,"
4444
+ "auto_generate_synonyms_phrase_query=true, boost = 0.77, cutoff_frequency=0.33,"
45-
+ "fuzziness = 14, fuzzy_transpositions = false, lenient = true, max_expansions = 25,"
45+
+ "fuzziness = 'AUTO:1,5', fuzzy_transpositions = false, lenient = true, max_expansions = 25,"
4646
+ "minimum_should_match = '2<-25% 9<-3', prefix_length = 7, tie_breaker = 0.3,"
4747
+ "type = most_fields, slop = 2, zero_terms_query = 'ALL') | fields Id";
4848
var result = executeQuery(query);
49-
assertEquals(507, result.getInt("total"));
49+
assertEquals(424, result.getInt("total"));
5050
}
5151

5252
@Test

integ-test/src/test/java/org/opensearch/sql/sql/MultiMatchIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ public void test_all_params() throws IOException {
3939
String query = "SELECT Id FROM " + TEST_INDEX_BEER
4040
+ " WHERE multi_match(['Body', Tags], 'taste beer', operator='and', analyzer=english,"
4141
+ "auto_generate_synonyms_phrase_query=true, boost = 0.77, cutoff_frequency=0.33,"
42-
+ "fuzziness = 14, fuzzy_transpositions = false, lenient = true, max_expansions = 25,"
42+
+ "fuzziness = 'AUTO:1,5', fuzzy_transpositions = false, lenient = true, max_expansions = 25,"
4343
+ "minimum_should_match = '2<-25% 9<-3', prefix_length = 7, tie_breaker = 0.3,"
4444
+ "type = most_fields, slop = 2, zero_terms_query = 'ALL');";
4545
var result = new JSONObject(executeQuery(query, "jdbc"));
46-
assertEquals(507, result.getInt("total"));
46+
assertEquals(424, result.getInt("total"));
4747
}
4848

4949
@Test

opensearch/src/main/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/relevance/MultiMatchQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public MultiMatchQuery() {
2929
b.autoGenerateSynonymsPhraseQuery(Boolean.parseBoolean(v.stringValue())))
3030
.put("boost", (b, v) -> b.boost(Float.parseFloat(v.stringValue())))
3131
.put("cutoff_frequency", (b, v) -> b.cutoffFrequency(Float.parseFloat(v.stringValue())))
32-
.put("fuzziness", (b, v) -> b.fuzziness(Integer.parseInt(v.stringValue())))
32+
.put("fuzziness", (b, v) -> b.fuzziness(v.stringValue()))
3333
.put("fuzzy_transpositions", (b, v) ->
3434
b.fuzzyTranspositions(Boolean.parseBoolean(v.stringValue())))
3535
.put("lenient", (b, v) -> b.lenient(Boolean.parseBoolean(v.stringValue())))

opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/FilterQueryBuilderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ void should_build_multi_match_query_with_custom_parameters() {
506506
+ " \"operator\" : \"AND\",\n"
507507
+ " \"analyzer\" : \"keyword\",\n"
508508
+ " \"slop\" : 1,\n"
509-
+ " \"fuzziness\" : \"2\",\n"
509+
+ " \"fuzziness\" : \"AUTO:2,4\",\n"
510510
+ " \"prefix_length\" : 1,\n"
511511
+ " \"max_expansions\" : 3,\n"
512512
+ " \"minimum_should_match\" : \"3\",\n"
@@ -527,7 +527,7 @@ void should_build_multi_match_query_with_custom_parameters() {
527527
dsl.namedArgument("analyzer", literal("keyword")),
528528
dsl.namedArgument("auto_generate_synonyms_phrase_query", literal("false")),
529529
dsl.namedArgument("cutoff_frequency", literal("4.3")),
530-
dsl.namedArgument("fuzziness", literal("2")),
530+
dsl.namedArgument("fuzziness", literal("AUTO:2,4")),
531531
dsl.namedArgument("fuzzy_transpositions", literal("false")),
532532
dsl.namedArgument("lenient", literal("false")),
533533
dsl.namedArgument("max_expansions", literal("3")),

opensearch/src/test/java/org/opensearch/sql/opensearch/storage/script/filter/lucene/MultiMatchTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ static Stream<List<Expression>> generateValidData() {
7474
List.of(
7575
dsl.namedArgument("fields", fields_value),
7676
dsl.namedArgument("query", query_value),
77-
dsl.namedArgument("fuzziness", DSL.literal("4"))
77+
dsl.namedArgument("fuzziness", DSL.literal("AUTO:2,4"))
7878
),
7979
List.of(
8080
dsl.namedArgument("fields", fields_value),

sql/src/test/java/org/opensearch/sql/sql/antlr/SQLSyntaxParserTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public void can_parse_multi_match_relevance_function() {
187187
assertNotNull(parser.parse(
188188
"SELECT id FROM test WHERE"
189189
+ " multi_match([\"Tags\" ^ 1.5, Title, `Body` 4.2], 'query', analyzer=keyword,"
190-
+ "operator='AND', tie_breaker=0.3, type = \"most_fields\", fuzziness = 4)"));
190+
+ "operator='AND', tie_breaker=0.3, type = \"most_fields\", fuzziness = \"AUTO\")"));
191191
}
192192

193193
@Test

0 commit comments

Comments
 (0)