検索語のサジェスト、人気ワードが表示されない[FESS]

Linux(RedHat 7)環境でFESSを運用していましたが、先日旧バージョンを削除し、新バージョンのFESSを新規インストールしました。

Fess 13.16.0→14.2.0
Elasticsearch 7.16.2→8.2.2

クロールは問題なく動作していますが、以前のバージョンで使えた下記の機能が動作していません。
・検索語からのサジェスト(いくら検索しても0件のまま)
・人気ワード(何度検索しても表示されない)

検索時は、間隔を1分空ける、セッションを逐一クリア(cookieを削除)、複数ブラウザでアクセス等していますが、動作しません。
この場合、まずはどういったところから調査していけばよいでしょうか?見るべきログや設定等教えていただけたらと思います。

ご教示の程よろしくお願いします。

検索後に、Suggest Indexer スケジュールのスクリプトで、logLevel を debug に変更して実行、fess-suggest.log を確認する。

高度なところでは、Elasticsearch の インデックス fess.suggest.xxxx に、検索ワードが含まれているか調べる手順になるかと思います。

ただ、わたしも、Fess 13.10 ~最新版まで、人気ワードを表示させる事は出来ていません。

ドキュメントからのサジェストは機能していますが、検索語からのサジェスト は機能していません。検索語からのサジェストが機能していないので、人気ワードは出ないという理解です。

ファイルクローラー + LDAP 認証 で、ゲスト無し、Webクローラー無し という運用の性質上なのか…
ソースを読み込んでも、問題点がわかりませんでした。

回答ありがとうございます。

先程、Suggest Indexerをdebugで実行してみましたが、warningやerrorといったログはありませんでした。
関係するジョブは、Suggest Indexer以外にもあるのでしょうか?

Elasticsearch の インデックスも、見てみます。

私の方は、検索対象がホームページのため、ウェブクロールで設定しています。旧バージョンではすぐ人気ワードが反映されたのですが…もう少し、色々なログを見てみたいと思います。

デバッグログを見ると、
[main] INFO Store search logs.
の次の行に、検索ログを取得しているクエリーのログが出ています。

そのあとに、
[main] DEBUG Search Role: 1:guest=1guest
とログに出ており、

どうやら fess_config.properties に、
suggest.search.log.permissions={user}guest,{role}guest
という設定があり、
こちらで 検索ワードとして扱える ユーザーや、ロールを指定する必要がありました。

[main] INFO Store search logs.以降のログを確認したところ、以下のようなログが複数ありました。

検索語は認識しているようです。

[main] DEBUG Index from searchWord. word: 【検索ワード】

どうやら fess_config.properties に、
suggest.search.log.permissions={user}guest,{role}guest
という設定があり、
こちらで 検索ワードとして扱える ユーザーや、ロールを指定する必要がありました

これを見て、管理者でログインしたままだからダメなのか?と思い
ログアウトして検索しましたが、結果は変わりませんでした。

Javaの素養がないので、ソースを読むこともできず…正直手詰まりです。

私以外にも、同じ現象が起きている方がいると分かっただけでも収穫でした。
バージョンを戻すことが諸事情ありできないので、色々試しながら検証したいと思います。

他に参考になりそうな情報がありましたら、思いついた時にでも教えていただけると助かります。

次のような感じで、どうでしょうか?
たとえば、AAAを人気キーワードに出すことを考えると、

  1. クロールしてインデックスを作成して、AAAがヒットする状態にする
  2. 管理者でログイン、ログアウト、検索画面でAAAを検索する(これを10回以上繰り返す)
    (ログインしていない状態で検索をする)
  3. 管理者でログインして、スケジューラーでLog Aggregatorを実行する
  4. スケジューラーでSuggest Indexerを実行する
  5. ログアウトして、検索画面を表示する
1 Like

13.16.0、14.3.0 で、上記手順で人気ワードを表示させることができました!

スケジューラーの実行は不要(毎分の Log Aggregator は実行される) でした。

ウェブクロール、guest をパーミッションに指定。guest の検索という条件で。
全般の設定 「人気ワードのレスポンス」がアンチェックにすると、消える事を確認。
JSON API でも取得できました。

@zolgear おめでとうございます!

@shinsuke
私の方は、同じ手順でも結果変わらずでした…。
前のバージョンの検証環境が残っているので動きを比較してみると、1度検索するとすぐサジェストに反映されます。
人気ワードも、10回検索するとSuggest Indexerの実行を待たず表示されます。

debugレベルでログを出力してますが、たまにメモリ逼迫のexceptionがある以外は、特に出ていません。

関係ないかもしれませんが、ドキュメントからのサジェスト生成も上手くいっていません。
前の環境では、サジェストに日本語の熟語が表示されましたが、
アップグレード後は、英単語とカタカナ単語しかサジェストに表示されません。
以前は、「静岡」が表示されたのが、「静」「岡」としか表示されない、といった具合です。

色々書き連ねてしまいましたが、他に必要な情報や、試すべきことがありましたらご教示お願いします。

かなり昔のバージョンでは、単純に回数で人気キーワードに表示されるときもあったかと思います。単純に表示させてしまうと問題があるので、最近のバージョンでは現実的な感じの条件で出るように変えています。
インストールに失敗しているようにも見えるので、クリーンな環境で正しい状況を確認していただくのが良いと思います。

ご教示ありがとうございます。
やはり、バージョンアップに失敗していますよね…FESSとElasticsearchの名前が付くファイルやディレクトリは全削除したのですが、消し切れていないものがあるのかも知れません。

今すぐは試せそうにないですが、クリーンインストールした際は結果をご報告したいと思います。
アドバイスいただきありがとうございました。

先日、OS(RHEL7)からクリーンインストールし、FESSの最新版を新規インストールしました。
ですが、検索語からのサジェスト・人気ワードが表示されませんでした。
ドキュメントからのサジェストは生成されますが、以前のように漢字熟語で生成されず、カタカナ語と英単語のみ(漢字は1文字しかサジェストに出てこない)の状態です。
日本語のサジェストが上手く生成されないようです。何かご存じのことがありましたら、情報頂けますと幸いです。

インストールソフト
・FESS 14.5.0
・Elasticsearch 8.5.1
・OpenJDK 17.0.5+8

サジェストのanalyzeはfess_suggest_analyzerインデックスを利用しているので、このインデックスの設定がおかしいか、クロールしているドキュメントの言語判定が正しくないのか、などが可能性としてはあるかもしれません。