Elasticsearchのストップワードであるため、特定の用語を検索しても結果が返されない
How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!
While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.
legacy-article
learn-legacy-article-disclaimer-text
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちら までご連絡ください。
問題
特定の語句を検索すると、一致するものがあるはずなのに、結果が返ってこない。
Elasticsearch の設定方法 stopwords .
環境
Liferay DXP 7.0- 7.4
Elasticsearch 2.x- 7.x
解決
デフォルトでは、Elasticsearchはトークン・ストリームからいくつかの単語を削除しています。 これらの単語はストップワードと呼ばれます。
使用している検索用語が特定の言語(たとえばスペイン語)のリストに表示される場合は、その単語を許可するようにストップワード リストをカスタマイズし、その用語を検索したときに結果を取得する必要があります。
これに取り組むには、アナライザーをその言語用に再定義し、 stop フィルタをカスタマイズします。
STOP フィルタをカスタマイズしてLANGUAGE-Xアナライザをカスタマイズする方法。
スペイン語を使用していて、リストから「nada」(何もない の意味)を削除したいとします。
まず、現在のリスト (spanish_stop.txt ) をダウンロードし、任意に編集してください。 この場合、"nada "が出てくる行を削除することです。
次に、 Elasticsearch reference から spanish analyzer をコピーして、ニーズに合わせてカスタマイズしてください。 例(ご自身のユースケースに合わせてアレンジする必要があるかもしれません):
{ "analysis": { "filter": { "spanish_stop": { "type": "stop", "stopwords_path": "spanish_stop.txt" }, "spanish_stemmer": { "type": "stemmer", "language": "light_spanish" } }, "analyzer": { "spanish": { "tokenizer": "standard", "filter": [ "lowercase", "spanish_stop", "spanish_stemmer" ] } } } }
なお、 stopwords を stopwords_path に変更しました( 設定可能なパラメータ を参照)。
アナライザーの準備ができたら、それを適用する必要があります:
コントロールパネル → 設定 → システム設定 に移動します。
Elasticsearchのエントリーを探します。 クリックすると編集できます。
追加インデックス設定 に移動し、カスタムアナライザーを含むJSONフラグメントをそこにコピーしてください。
変更内容を保存します。
新しいアナライザーを適用するために、フルリインデックスを実行します。
カスタムアナライザーの適用方法についての詳しい説明は、こちら をご覧ください。
did-this-article-resolve-your-issue