V14.13で使用すべき fess-webapp-semantic-search のバージョン

fess-webapp-semantic-search のPluginを TAR.GZ版で使用したいと考えています。
FESSの管理-システム-プラグイン プラグインのインストールでリモートを選んだ際のプルダウンメニューにfess-webapp-semantic-searchが見当たりません。
どのようにインストールするのが正しいのでしょうか。

ちなみに、FESS V14.10.0 には14.10.0 と 14.10.1 がリストされていました。

動作確認する時間がなかったため、現時点では、14.13系のをリリースしてません。ですので、現状では、ソースからmvn packageして、プラグイン画面でjarファイルをアップロードしていただくしかないと思います。

状況理解しました。ありがとうございます。
その辺りの知見に乏しいので、リリース済みのバージョンを使用することにします。

Fess 14.11 と opensearch 2.13.0 を使用し、言語モデルのDEPLOYまで完了したと思われるのですが、セマンティック検索による検索語の拡張がされていない印象です。
…入力したキーワードのみで検索されている?
FESSに対して最終的にどのような検索キーワードが入力されたのかを確認する手段はありますでしょうか。

ログレベルをデバッグにして、fess.logを確認するとかになると思います。

ありがとうございます。
確認してみます。

[DEBUG]の設定でfess.log を見ていますが、該当行を特定することができませんでした。
どのキーワードでログが出力されているか、ご教示頂けると助かります。

オープンソースで細かいサポートをしていくのは厳しいので、ソースを合わせて見て判断してもらうか、商用サポートを利用してくださいとかになってしまうと思います。
ひとまず、docker-semanticsearchでセットアップできるようにしました。semantic.codelibs.org のようになり、検索結果はRRFでのハイブリッドサーチになり、テキスト検索は人っぽいアイコン、ベクトル検索はロボットっぽいアイコンで表示されます。

ご丁寧な対応、ありがとうございます。
動作イメージを持つことはできましたので、もう少しOSで試行してみます。

docker-semanticsearch の環境をそのままに導入し、手元の環境で動作させることができました。
ありがとうございました。

以下の点について、可能な範囲でコメント頂けますでしょうか。
・compose.yaml 中の ‘volumes’ が何らかの悪さをするようで、Internal Errorを起こしたので外した状態で compose しましたが、機能に何か制限や想定しない動作が発生しますでしょうか。
volumes:
- ./data/fess/opt/fess:/opt/fess
- ./data/fess/var/lib/fess:/var/lib/fess
- ./data/fess/var/log/fess:/var/log/fess
- ./data/fess/usr/share/fess/app/WEB-INF/plugin:/usr/share/fess/app/WEB-INF/plugin
- ./data/fess/usr/share/fess/app/WEB-INF/view/semantic:/usr/share/fess/app/WEB-INF/view/semantic

・サンプルサイトの「テキスト検索は人っぽいアイコン、ベクトル検索はロボットっぽいアイコンで表示」はどのように実装されているのでしょうか。

Internal Errorを起こした

どのようなエラーでしょうか?スタックトレースなどを見ないと、何とも言えないです。

アイコンで表示

ここで出し分けていますが、検索時に複数のRankFusionSearcherに対して検索を投げて、Reciprocal Rank Fusionで結果をマージする際にどのSearcherから取得したものか?が各検索結果に格納されます。

ありがとうございます。

Internal Error は、Browserの側が
500(Internal Server Error)
を返してコンテンツ表示ができない状態でした。ログをいろいろと見てみましたが、原因となりそうな箇所を特定できませんでした。
理由は明確に分かっていませんが、volumes: を外すと動いた、という状況です。
この設定がない場合でも不具合がないのであれば、そのまま使おうと思います。

アイコンで表示
コードの提供ありがとうございます。当方の環境でどのように組み込めば良いか、考えます。

問題はわかりませんが、

  • ./data/fess/var/lib/fess:/var/lib/fess
  • ./data/fess/var/log/fess:/var/log/fess

はなくても、動く気がしますが、他はないと期待通りに動かないと思います。
docker logsでも特に何ない感じだと、setup.shでしているchownで適切に変更とかされていないとかかもしれません。

ありがとうございます。
確認してみます。

‘chownで適切に変更れていない’ について
id: ‘1001’: no such user
となっています。
これだと上手くありませんでしょうか。

ディレクトリを chown するのは、どういった背景があっての処理でしょうか。

id: ‘1001’: no such user

エラーになっていると思います。
LinuxのDockerの場合、コンテナの実行ユーザーでマウントしたボリュームにアクセスするので、そのユーザーIDが1001になっていると思います。chownできないようであれば、とりあえず、data/fess/opt/fessなどをchmod 777とかで一度起動すると、起動できるようになると思うので、起動したら、chmod 755とかにしてに戻して、ファイルのオーナーとか確認して、マウントするボリュームの所有者を調整するとかすればよいと思います。

期待通りの動作をしないとのこと、承知しました。
助言頂いた点を踏まえて、再試行してみます。

docker compose 後のdocker上で以下の2つのファイルpathが見えていないのですが、
/usr/share/opensearch/data
/usr/share/opensearch/config/dictionary
この動きは正しいでしょうか。

volumes で、以下の参照をしているので、必要なファイルだと思っています。
- ./data/opensearch/usr/share/opensearch/data:/usr/share/opensearch/data
- ./data/opensearch/usr/share/opensearch/config/dictionary

localhost:8080 へアクセスすると、
/usr/share/opensearch/config/dictionary
が新規に作成されてしまいます。

どこかで何かを間違えているように思うのですが、ご助言頂けますでしょうか。

pathが見えていない

というのがどのような状態なのかわからないので、ログやエラーメッセージなど、具体的な情報がないと何とも言えないです。

「path が見えていない」と考えたのは、fess01 のdockerでTerminailを開いて ls コマンドを実行した結果が、
ls: cannot access ‘/usr/share/opensearch/config/dictionary’: No such file or directory
だったためです。

ただ、試しに fess01 において、volumes: に
./data/opensearch/usr/share/opensearch/config/dictionary:/usr/share/opensearch/config/dictionary
を追加して、fess01から見えるようにしても
HTTP Status 500 – Internal Server Error
となってFESSにアクセスできなかったので、直接の原因ではないかもしれません。

fess01のログで気になる点としては、以下のようなものがあります。
fess01 | {“@timestamp”:“2024-06-19T03:28:41.878Z”,“log.level”:“DEBUG”,“message”:“Failed to access http://search01:9200/_cluster/health/?wait_for_no_relocating_shards=false&wait_for_no_initializing_shards=false&wait_for_nodes=&wait_for_status=yellow&wait_for_active_shards=0&wait_for_active_shards=0&timeout=30s&master_timeout=30s.”, “ecs.version”: “1.2.0”,“service.name”:“fess”,“event.dataset”:“app”,“process.thread.name”:“eshttp”,“log.logger”:“org.codelibs.fesen.client.curl.FesenRequest”,“error.type”:“org.codelibs.curl.CurlException”,“error.message”:“Failed to access to http://search01:9200/_cluster/health/?wait_for_no_relocating_shards=false&wait_for_no_initializing_shards=false&wait_for_nodes=&wait_for_status=yellow&wait_for_active_shards=0&wait_for_active_shards=0&timeout=30s&master_timeout=30s",“error.stack_trace”:"org.codelibs.curl.CurlException: Failed to access to http://search01:9200/_cluster/health/?wait_for_no_relocating_shards=false&wait_for_no_initializing_shards=false&wait_for_nodes=&wait_for_status=yellow&wait_for_active_shards=0&wait_for_active_shards=0&timeout=30s&master_timeout=30s\n\tat org.codelibs.curl.CurlRequest.lambda$connect$4(CurlRequest.java:233)\n\tat java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source)\n\tat java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)\n\tat java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)\n\tat java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)\n\tat java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)\n\tat java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)\nCaused by: org.codelibs.curl.CurlException: Failed to access the response.\n\tat org.codelibs.curl.CurlRequest$RequestProcessor.accept(CurlRequest.java:312)\n\tat org.codelibs.curl.CurlRequest.lambda$execute$5(CurlRequest.java:258)\n\tat org.codelibs.curl.CurlRequest.lambda$connect$4(CurlRequest.java:231)\n\t… 6 more\nCaused by: java.net.ConnectException: Connection refused\n\tat java.base/sun.nio.ch.Net.connect0(Native Method)\n\tat java.base/sun.nio.ch.Net.connect(Unknown Source)\n\tat java.base/sun.nio.ch.Net.connect(Unknown Source)\n\tat java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source)\n\tat java.base/java.net.Socket.connect(Unknown Source)\n\tat java.base/java.net.Socket.connect(Unknown Source)\n\tat java.base/sun.net.NetworkClient.doConnect(Unknown Source)\n\tat java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)\n\tat java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)\n\tat java.base/sun.net.www.http.HttpClient.(Unknown Source)\n\tat java.base/sun.net.www.http.HttpClient.New(Unknown Source)\n\tat java.base/sun.net.www.http.HttpClient.New(Unknown Source)\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)\n\tat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)\n\tat java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)\n\tat org.codelibs.curl.CurlRequest$RequestProcessor.accept(CurlRequest.java:309)\n\t… 8 more\n”}

一方で、以下の項目もあり、良く分かっていません。
fess01 | {“@timestamp”:“2024-06-19T03:28:41.326Z”,“log.level”:“DEBUG”,“message”:“[http://search01:9200][green] scheduling a node checker.”, “ecs.version”: “1.2.0”,“service.name”:“fess”,“event.dataset”:“app”,“process.thread.name”:“main”,“log.logger”:“org.codelibs.fesen.client.node.NodeManager”}