From 0a5c0af348727f0a98015508ba97c298f3d5a78c Mon Sep 17 00:00:00 2001 From: Philippus Baalman Date: Sun, 5 May 2024 23:35:16 +0200 Subject: [PATCH] Add autoGenerateSynonymsPhraseQuery to MatchQuery (#3058) --- .../requests/searches/queries/matches/MatchQuery.scala | 6 +++++- .../searches/queries/text/MatchQueryBuilderFn.scala | 1 + .../src/test/resources/json/search/search_match.json | 1 + .../scala/com/sksamuel/elastic4s/search/SearchDslTest.scala | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/elastic4s-domain/src/main/scala/com/sksamuel/elastic4s/requests/searches/queries/matches/MatchQuery.scala b/elastic4s-domain/src/main/scala/com/sksamuel/elastic4s/requests/searches/queries/matches/MatchQuery.scala index 9fabda27f..914dad61b 100644 --- a/elastic4s-domain/src/main/scala/com/sksamuel/elastic4s/requests/searches/queries/matches/MatchQuery.scala +++ b/elastic4s-domain/src/main/scala/com/sksamuel/elastic4s/requests/searches/queries/matches/MatchQuery.scala @@ -19,12 +19,16 @@ case class MatchQuery(field: String, operator: Option[Operator] = None, prefixLength: Option[Int] = None, queryName: Option[String] = None, - zeroTerms: Option[String] = None) + zeroTerms: Option[String] = None, + autoGenerateSynonymsPhraseQuery: Option[Boolean] = None) extends Query { def analyzer(an: String): MatchQuery = copy(analyzer = an.some) def analyzer(an: Analyzer): MatchQuery = copy(analyzer = an.name.some) + def autoGenerateSynonymsPhraseQuery(autoGenerate: Boolean): MatchQuery = + copy(autoGenerateSynonymsPhraseQuery = autoGenerate.some) + def boost(boost: Double): MatchQuery = copy(boost = boost.some) def cutoffFrequency(f: Double): MatchQuery = copy(cutoffFrequency = f.some) def lenient(lenient: Boolean): MatchQuery = copy(lenient = lenient.some) diff --git a/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/text/MatchQueryBuilderFn.scala b/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/text/MatchQueryBuilderFn.scala index 85e7b5531..45076ba9f 100644 --- a/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/text/MatchQueryBuilderFn.scala +++ b/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/text/MatchQueryBuilderFn.scala @@ -14,6 +14,7 @@ object MatchQueryBuilderFn { q.queryName.foreach(builder.field("_name", _)) q.analyzer.foreach(builder.field("analyzer", _)) + q.autoGenerateSynonymsPhraseQuery.foreach(builder.field("auto_generate_synonyms_phrase_query", _)) q.boost.foreach(builder.field("boost", _)) q.cutoffFrequency.map(_.toString).foreach(builder.field("cutoff_frequency", _)) q.fuzziness.foreach(builder.field("fuzziness", _)) diff --git a/elastic4s-tests/src/test/resources/json/search/search_match.json b/elastic4s-tests/src/test/resources/json/search/search_match.json index 4d2272cd3..47fbd421e 100644 --- a/elastic4s-tests/src/test/resources/json/search/search_match.json +++ b/elastic4s-tests/src/test/resources/json/search/search_match.json @@ -4,6 +4,7 @@ "name": { "query": "coldplay", "analyzer": "french", + "auto_generate_synonyms_phrase_query": false, "cutoff_frequency": "3.4", "fuzziness": "2", "fuzzy_transpositions": true, diff --git a/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/SearchDslTest.scala b/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/SearchDslTest.scala index d9789aaee..b899ec6c4 100644 --- a/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/SearchDslTest.scala +++ b/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/SearchDslTest.scala @@ -172,6 +172,7 @@ class SearchDslTest extends AnyFlatSpec with MockitoSugar with JsonSugar with On .fuzziness("2") .prefixLength(4) .analyzer(FrenchLanguageAnalyzer) + .autoGenerateSynonymsPhraseQuery(false) } req.request.entity.get.get should matchJsonResource("/json/search/search_match.json") }