現在、BoolQueryBuilder を使用してテキスト検索を構築しています。誤字脱字で困っています。誰かが「chair」ではなく「chiar」を検索したとき、私は彼らにいくつかの提案を示さなければなりません。
私はドキュメントを読み、提案を取得するのに SuggestionBuilder が役立つことを確認しました。
結果がゼロの場合に提案を表示できるように、1 つのクエリですべての要求を送信できますか?
現在、BoolQueryBuilder を使用してテキスト検索を構築しています。誤字脱字で困っています。誰かが「chair」ではなく「chiar」を検索したとき、私は彼らにいくつかの提案を示さなければなりません。
私はドキュメントを読み、提案を取得するのに SuggestionBuilder が役立つことを確認しました。
結果がゼロの場合に提案を表示できるように、1 つのクエリですべての要求を送信できますか?
さまざまな検索用語を送信する必要はありません。つまりchair
、chiar
提案を取得するために、効率的でパフォーマンスが低く、ユーザーがスペルを間違える可能性のあるすべての組み合わせを知ることはできません。
代わりに、ブール クエリで使用できる一致クエリ自体で、ファジー クエリまたはファジー パラメータを使用します。
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"
}
}