Fess 14.10.1のリリース

Fess 14.10.1をリリースしました。メンテナンスリリースです。

修正内容を見ていくと、

#2768はセマンティックサーチの利用時に正しくページングができない場合があったので、その修正です。

#2767はレスポンスにsearcher名を含めるようにしました。セマンティックサーチを利用したハイブリットサーチでどこから取得した検索結果かがわかりにくいため、レスポンスにsearcher名を含めるようにしました。

#2766はAzure ADを利用したファイルシステムクロールしたときにロール名が一致しない場合があるので、その対応です。

#2765はlang_euのダイナミックマッピングの設定がおかしかったので、その修正です。

#2764はファイルシステムクロール時にFileAttributeからの値の取得を見直して、OSに適した情報を取得するようにしました。

#2763はデータストアでファイルリストクロール時にリダイレクトなどされるような場合に適切に処理できるようにしました。

という感じで、大きな変更はありませんが、何かあれば、フォーラムに投げてください。

Fessのセマンティックサーチ

semantic.codelibs.orgにデモサイトを作ってみた。この手のを作って、実験していかないと改善もできないですし。

仕組み的には、docker-semanticsearchにあるものを動かしている感じです。セットアップ手順とかはそこに書いてあるとおりで、Fessにfess-webapp-semantic-searchプラグインを入れて、動かしています。

インデクシングについては、検索対象は、英語のWikipediaのコンテンツ部分を抜き出して、単純なHTMLにして、それをインデックスしています。HTMLなので、普通にウェブクロールしている感じです。

検索については、通常の転置インデックスに対する検索とベクトル検索のハイブリットサーチになっています。ベクトル検索は、OpenSearchのNeural Queryを投げて、ANNで検索してます。なので、通常の検索の検索結果と、ANNで返ってくるTop Kの検索結果をReciprocal Rank Fusion(RRF)でマージして、検索結果を表示してます。RRF自体は、Fessで実装してます。通常のFessの検索画面だと、ベクトル検索の結果がどれなのかがわかりにくいので、ベクトル検索結果はロボットアイコンが表示されてます。人っぽいアイコンの方は通常の検索結果のものです。なので、ページングしていくと、通常の検索結果だけになるのがわかると思います。

RRFの実装自体はページングを考えなければ、シンプルなので、ベクトル検索に限らず、複数の検索結果をマージできるようにFessでは汎用的に実装してあります。現時点では、ファセット表示のところに、ベクトル検索の集計結果がカウントされないという、制限事項はありますが…。

ベクトル検索の結果については、embeddingの質とかもあるので、まだまだ改善の余地はある印象があります。このデモサイトを使ってみて、見つける課題とかもあるので、地道に改善していこうと思っています。

JSON形式のログを変換する

FessをDockerで動かすと、ECS形式のJSONとして、ログが出力されます。人がパッと見て理解はしにくいので、ただのログファイルのように変換するには、jqを利用して、変換すると見やすくなると思います。

cat fess-crawler.log | jq -r '."@timestamp" + " " + ."log.level" + " " + .message'