部分一致の曖昧検索について

match_phrase queryと曖昧検索を組み合わせたような検索をしたいと考えております。
バージョン:Elasticsearch6.3(AWSのElasticsearch Serviceを使用しております。)

具体的には

データ1:(株)テスト春夏秋冬
データ2:株式会社テスト冬秋夏春

が存在するとして、下記2点を実現させたいです。

①『テスあ春』で検索を実行した場合、1だけをヒットさせる。
②『株式会社テスあ』で検索を実行した場合、1と2をヒットさせる。

試したこと
データのtokenizerをicu_tokenizerにして類義語を設定し、match queryでfuzzinessを定義しました。①②ともにデータ2のみがヒットしました。(何故このような結果となるのかは理解できております。)

■Index

PUT test_index_1
{
  "settings" : {
    "index": {
      "number_of_shards" : 1,
      "number_of_replicas" : 0,
      "analysis":{
        "filter":{
          "synonym": {
            "type": "synonym",
            "synonyms": [
              "(株)=>株式会社"
              ]
          }
        },
        "analyzer": {
          "test_analyzer": {
            "type": "custom",
            "tokenizer": "icu_tokenizer",
            "filter": [
              "synonym"
            ]
          }
        }
      }
    }
  },
  "mappings": {
    "type": {
      "properties": {
        "name" : {
          "type" : "text",
          "analyzer" : "test_analyzer"
        }
      }
    }
  }
}

■データ

PUT test_index_1/type/1
{"name":"(株)テスト春夏秋冬"}
PUT test_index_1/type/2
{"name":"株式会社テスト冬秋夏春"}

■検索クエリ

GET test_index_1/_search
{
  "query": {
    "match" : {
      "name" : {
        "query": "テスあ春",
        "fuzziness": "2",
        "operator" : "and"
      }
    }
  }
}

GET test_index_1/_search
{
  "query": {
    "match" : {
      "name" : {
        "query": "株式会社テスあ",
        "fuzziness": "2",
        "operator" : "and"
      }
    }
  }
}

部分一致の曖昧検索を実現したい為、フレーズ検索を調べましたが、match_phrase queryにfuzzinessは使用できないようなので、別のアプローチがあれば、ご教示いただければと思います。

よろしくお願いいたします。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.