Fess 14.11.0のリリース

Fess 14.11.0をリリースしました。今回は特に大きな変更はないと思いますが、変更点を順に見ていくと、

#2769はサムネイル処理のプラグインを受け付けるようにしました。Fessは様々な機能を差し込んで利用できるようにしていますが、ウェブページのサムネイル生成方法にPlaywrightを利用して、ページのスクリーンショットをサムネイルにするプラグインをfess-thumbnail-playwrightとして、追加したので、独自のサムネイル生成処理などを追加するのがやりやすくなりました。

#2770はコマンド実行でサムネイル生成する処理で、コマンド実行のタイムアウト値をsystem.propertiesで設定できるようになりました。

#2771はサムネイル生成処理時に無駄なデバッグログが出力されないようにしました。

#2772もサムネイル処理が失敗したときに出力されるログメッセージの改善です。

#2774はパスマッピングで失敗したときに出力されるログメッセージがわかりにくいので、ログメッセージの改善です。

という感じです。あとは、内部で利用しているOpenSearchを2.11にしたので、それに合わせて変更しています。OpenSearch 2.10でパッケージ名変更などのリファクタリングが実施されているので。

何かあれば、フォーラムをご利用ください。

スクリーンショットをサムネイルにする

Fessは検索結果にサムネイルを表示する機能があるけど、以前はウェブページのスクリーンショットをサムネイルにしていたのだけど、これを生成するのはそこそこ重い処理なので、最近のFessではウェブページ内のそれっぽい画像をそのままサムネイルとして利用するようにしていた。

とはいえ、スクリーンショットをサムネイルにしたいという要件はあるので、fess-thumbnail-playwrightプラグインを作りました。Playwrightを利用して、スクリーンショットをとり、サムネイルにする機能です。

ひとまず、ざっくり作った感じではあるので
・プロキシ対応
・認証サイト対応
ができていません。fess-crawler-playwrightと同じようなことをすればよいだけだとは思いますが…。(商用案件で必要になれば、対応するかしれませんが、今のところは未定です)

という感じで、必要であればお試しください。Fess 14.11からプラグインとして、利用できると思います。

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の質とかもあるので、まだまだ改善の余地はある印象があります。このデモサイトを使ってみて、見つける課題とかもあるので、地道に改善していこうと思っています。