Elasticsearchのストップワードであるため、特定の用語を検索しても結果が返されない
knowledge-article-header-disclaimer-how-to
knowledge-article-header-disclaimer
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