0

現在、BoolQueryBuilder を使用してテキスト検索を構築しています。誤字脱字で困っています。誰かが「chair」ではなく「chiar」を検索したとき、私は彼らにいくつかの提案を示さなければなりません。

私はドキュメントを読み、提案を取得するのに SuggestionBuilder が役立つことを確認しました。

結果がゼロの場合に提案を表示できるように、1 つのクエリですべての要求を送信できますか?

4

1 に答える 1

0

さまざまな検索用語を送信する必要はありません。つまりchairchiar提案を取得するために、効率的でパフォーマンスが低く、ユーザーがスペルを間違える可能性のあるすべての組み合わせを知ることはできません。

代わりに、ブール クエリで使用できる一致クエリ自体で、ファジー クエリまたはファジー パラメータを使用します。

fuzziness パラメーターを指定した一致クエリを使用した例を示します。

インデックス定義

{
    "mappings": {
        "properties": {
            "product": {
                "type": "text"
            }
        }
    }
}

インデックスのサンプル ドキュメント

{
  "product" : "chair"
}

用語が間違っている検索クエリchiar

{
    "query": {
        "match" : {
            "product" : {
                "query" : "chiar",
                "fuzziness" : "4" --> control it according to your application
            }
        }
    }
}

検索結果

 "hits": [
      {
        "_index": "so_fuzzy",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.23014566,
        "_source": {
          "product": "chair"
        }
      }
于 2020-03-24T05:22:15.257 に答える