legacy-knowledge-base
公開されました Jul. 2, 2025

Elasticsearchのストップワードであるため、特定の用語を検索しても結果が返されない

投稿者

Jose L. Bango

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"
    ]
    }
    }
    }
    }
    なお、 stopwordsstopwords_path に変更しました( 設定可能なパラメータを参照)。
  • アナライザーの準備ができたら、それを適用する必要があります:
    1. コントロールパネル → 設定 → システム設定 に移動します。
    2. Elasticsearchのエントリーを探します。 クリックすると編集できます。
    3. 追加インデックス設定 に移動し、カスタムアナライザーを含むJSONフラグメントをそこにコピーしてください。
    4. 変更内容を保存します。
    5. 新しいアナライザーを適用するために、フルリインデックスを実行します。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base