11

複数の単語を含む単純なオートコンプリートのユースケースを解決するためにエラスティック検索を機能させるにはどうすればよいですか?

次のタイトルのドキュメントがあるとしましょう - Elastic search は lucene の上に構築された優れた検索ツールです。

したがって、プレフィックスクエリを使用してフォームで構築すると、

{
    "prefix" : { "title" : "Elas" }
}

そのドキュメントが結果セットに返されます。

ただし、プレフィックス検索を行うと

{
    "prefix" : { "title" : "Elastic sea" }
}

結果が出ません。

単純なオートコンプリートのユースケースの結果をユーザーに提示するには、どのような種類のクエリを作成する必要がありますか。

4

2 に答える 2

17

で作成されたプレフィックス クエリは、インデックスのElastic seaような用語に一致Elastic searchしますが、空白でトークン化するとインデックスには表示されません。あなたが持っているのはelasticsearchと 2 つの異なるトークンです。分析 APIを見て、実際にテキストにどのようにインデックスを付けているかを確認してください。

回答のようなブールクエリを使用すると、用語の位置は考慮されません。結果として、たとえば次のドキュメントが得られます。

エラスティック モデルは、Moose オブジェクトを保存し、それらを検索するためのフレームワークです。

オートコンプリートの目的で、フレーズ クエリを作成し、最後の用語をプレフィックスとして使用することができます。これは、一致クエリで match_phrase_prefix タイプを使用してすぐに利用できます。これは、ユースケースに正確に利用できるようになりました。

{
    "match" : {
        "message" : {
            "query" : "elastic sea",
            "type" : "phrase_prefix"
        }
    }
}

このクエリでは、例のドキュメントは一致しますが、私のドキュメントelasticはそれに近くないため、一致しませんsearch

于 2013-07-17T11:42:02.170 に答える