FessをDockerで動かすと、ECS形式のJSONとして、ログが出力されます。人がパッと見て理解はしにくいので、ただのログファイルのように変換するには、jqを利用して、変換すると見やすくなると思います。
cat fess-crawler.log | jq -r '."@timestamp" + " " + ."log.level" + " " + .message'
Challange IT For Future
FessをDockerで動かすと、ECS形式のJSONとして、ログが出力されます。人がパッと見て理解はしにくいので、ただのログファイルのように変換するには、jqを利用して、変換すると見やすくなると思います。
cat fess-crawler.log | jq -r '."@timestamp" + " " + ."log.level" + " " + .message'
Fess 14.10.0をリリースしました。Fessとしては、特に大きな変更はないのですが、OpenSearch 2.9でmapping char filterが辞書ファイルに#で始まるコメントを許可しないという破壊的な変更が入っているため、OpenSearchをアップグレードする際には注意が必要になります。Fessで利用しているmapping.txtで、#の行を削除しないと、fessインデックスがopenできない状態になります。
という感じですが、14.10の変更を見ていくと、
#2758はデータストアクロールで、インデクシングするURLに#を含めると、検索結果でリンクが機能しないという問題があるのを対応しました。
#2759はデータストアクロールでは設定パラメーターで指定するような値が利用できないので、パラメーターの入力されたものを利用できるようにしました。CSVリストクロールなどのときに、CrawlerClientが指定されたURLにアクセスするときのパラメーターとして渡せるようになりました。
#2760はAzureADを認証として利用して、AzureADを利用したファイルシステムのクロールするときに認証情報が異なるので、それに対応するようにしました。
#2762はFessのアップグレード処理関連の更新です。今回はmapping.txtの問題があるので、アップグレードを実行すると、mapping.txtから#〜を削除してくれる機能を追加してあります。なので、OpenSearch 2.9でfessインデックスが起動できないときには、アップグレードを実行すると、mapping.txtの問題を修正してくれます。
という感じで、OpenSearch 2.9のmapping char filterの処理が変更された問題はありますが、何かあれば、フォーラムをご利用ください。
Fess 14.9.1にfess-webapp-semantic-searchプラグインを入れることで、通常のキーワードベースの検索に加えて、ベクトルで検索した結果をマージして利用することができます。以前のプラグインでは、上位X件しか、ベクトル検索の結果を表示できなかったのですが、Fess 14.9.1以降ではReciprocal Rank Fusion(RRF)によって、ベクトル検索の結果をマージすることができるので、キーワード検索の結果でページングすることができ、通常の検索システムとしても利用できます。
利用方法は、fess-webapp-semantic-searchのREADME.mdに書いてあるとおりですが、Dockerであれば、簡単に試すことができると思います。まず、docker-fessをcloneして取得します。
git clone --branch v14.9.1 --single-branch https://github.com/codelibs/docker-fess.git
cd docker-fess/compose
compose.yamlを編集して、プラグインがインストールされるようにします。以下のように環境変数に設定されるようにします。
- "FESS_PLUGINS=fess-webapp-semantic-search:14.9.0"
Fessを起動します。
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
OpenSearchにモデルをロードさせるために以下のスクリプトを取得してセットアップします。一応、多言語対応のモデルを利用して、ベクトルを生成していますが、必要に応じて、モデルを変更するなどしてください。
curl -o setup.sh https://github.com/codelibs/fess-webapp-semantic-search/blob/fess-webapp-semantic-search-14.9.0/tools/setup.sh /bin/bash setup.sh
setup.shを実行すると、fess.semantic_search.〜が表示されるので、これは、Fessにログインして、全般のシステムプロパティの入力欄にコピペしてください。
あとは、管理画面のメンテンナンスページにいき、再インデクシングを実行してください。この状態では、何もインデクシングされていないと思いますが、再インデクシングすると、ベクトル検索が可能なインデックスに更新する処理が走ります。
あとは、普通にクロールして、検索するだけです。何かあれば、フォーラムとかで気軽に聞いてください。