legacy-knowledge-base
公開されました Jun. 30, 2025

ドキュメントとメディアファイルでは検索が正しく機能しません

written-by

Solyom Nagy-Györkös

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

問題

  • アイテム選択時に、ドキュメントファイルやメディアファイルをより速く見つけたい。
  • 検索用語にファイル名の一部を指定しても、正しい結果が返されないか、何も返されません。
  • 検索語の先頭にワイルドカードを使用しても、使い勝手は向上しません。

環境

  • Liferay DXP

解決

  • 検索中、検索エンジンはテキスト分析を実行して検索対象のキーワードをトークン化し、インデックス化されたドキュメントに属するトークンと一致させようとします。 Liferayは各言語の標準言語アナライザーを使ってこの分析を行います。 (英語ロケールの場合は、英語アナライザーが使用されます)。 アナライザーは、トークンを分割するために探す「ストップワード」のリストを持っています。たとえば、単語の中に「-」があると、そのトークンは2つの別々のトークンに分割される。
  • 実際にどのように見えるのか - シナリオの例:

    この場合、"_"は "stopword "ではなありません。つまり、"icon_checkBoux "として一緒にトークン化されているが、検索されたトークン "check "や "Boux "とは一致しない。
    アナライザーがトークンをどのように解析しているかを見るには、次のようなコマンドを使用できます:

    POST _analyze
    {
    "analyzer": "english",
    "text": "icon_checkbox"
    }

    ## which returns

    {
    "tokens" : [
    {
    "token" : "icon_checkbox",
    "start_offset" : 0,
    "end_offset" : 13,
    "type" : "<ALPHANUM>",
    "position" : 0
    }
    ]
    }
  • 実際にどのように見えるか - 「デフォルト」の使用例:

    "-"や" "など他の区切り文字を使うと、"check "と一致する別のトークンができてしまうことに注意してください。

    POST _analyze 
    {
    "analyzer": "english",
    "text": "icon-checkbox"
    }

    ## which returns

    {
    "tokens" : [
    {
    "token" : "icon",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "<ALPHANUM>",
    "position" : 0
    },
    {
    "token" : "checkbox",
    "start_offset" : 5,
    "end_offset" : 13,
    "type" : "<ALPHANUM>",
    "position" : 1
    }
    ]
    }
  • Elasticsearch アナライザーの "stopwords "をカスタマイズすることで、(ファイルの命名スキームを変更する以外に)この挙動を緩和する方法があります。 そのための基本的なステップを紹介します:

    1. 言語とアナライザーを特定する:
    > ストップワードを変更したい言語を特定します。
    > Elasticsearch のコンフィギュレーションから対応するアナライザーを見つけます。この情報は、フィールドマッピングを調べることで見つけることができます。
    2. Elasticsearch ドキュメントに従ってアナライザーをカスタマイズしてください
    >> stopwords_path プロパティを持つ新しい stop フィルタを定義します。
    >> このフィルタをカスタムアナライザの設定に組み込みます。
    3. Liferay のカスタムアナライザーを適用するには、マッピングをオーバーライドし、デフォルトのアナライザーを新しいカスタムアナライザーに変更します。
    4. 新しいアナライザーをコンテンツに適用するために、完全な再インデックスを開始します。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base