8

次の単語を検索できるようにしたい

ヴィンセント ヴィンセント ヴィンセント

現在、データベースと ES のテストは Vincent のものです。

所有格を検出し、アポストロフィを無視することは可能ですか。Word-Delimiter を見てきましたが、これについてまともな説明が見つからないようです

4

3 に答える 3

9

Elasticsearch のアナライザーがどのように機能するかを理解する必要があります。アナライザーは、トークン化 (入力を空白などのトークンの束に分割する) と、一連のトークン フィルター (ストップ ワードなどの不要なトークンを除外するか、小文字のトークン フィルターのようにトークンを変更する) を実行します。すべてを小文字に変換します)。

分析は、インデックス作成中 (elasticsearch にデータを入力するとき) と、クエリに応じて検索中 (検索している文字列) の 2 つの非常に特定の時点で実行されます。

とはいえ、デフォルトのアナライザーは、標準のトークナイザー標準のトークン フィルター(標準のトークナイザーからトークンをクリーンアップするため)、小文字のトークン フィルターストップ ワード トークン フィルターで構成される標準のアナライザーです。

これを例にすると、「I love Vincent's pie!」という文字列を保存すると、デフォルトの標準アナライザーを使用している場合、実際には「i」、「love」、「vincent」、「s」、「pie」を格納しています。次に、(分析されtermていない) クエリで「Vincent's」を検索しようとすると、「Vincent's」はそれらのトークンの 1 つではないため、何も見つかりません! ただし、(分析された)クエリを使用して「Vincent's」を検索すると、「I love Vincent's pie!」が見つかります。"vincent" と "s" の両方が一致するためです。match

要するに、次のいずれかです。

  1. match自然言語の文字列を検索する場合は、 などの分析されたクエリを使用します。
  2. ニーズに合わせてアナライザーをセットアップします。複雑にしたい場合は、空白のトークナイザー、文字のトークナイザー、またはパターンのトークナイザーを実行するカスタム アナライザーをセットアップすることができます。ユースケースによって異なりますが、自然言語の文を扱っている場合は、標準のトークナイザーが自然言語検索用に構築されているため、これはお勧めしません。

詳細については、 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis.htmlを参照してください。

于 2014-03-10T20:31:22.457 に答える