全文検索業界?

FessとかをSolrやElasticsearchとかと比較とかされちゃうケースがあるのだけど、それはちょっと違う感じなのでざっくりまとめておく。ざっくりとカテゴリ分けすると、以下のような感じかと思う(まぁ、いろいろな考え方はあると思うが…)。

検索ライブラリ

検索システムを構築するためのコアなライブラリ。HTTPなどで呼び出すのではなく、組み込んで使う感じ。検索屋さんになりたい人向けで、システム構築屋さん向けではない。

(他にメジャーなのあったっけ…)

検索エンジン

HTTPなどでAPIを提供し、構築したいシステム連携して利用する。検索もチューニングしたいシステム構築屋さん向け。なので、検索についても設計等が必要なので、検索に関するナレッジは必要になる。

検索サーバ

検索エンジンのようにシステム連携も可能なことに加えて、クロールする機能を持っていたり、実用的ですぐに利用可能な検索結果を表示するUIを持つ。連携するシステム構築に注力して、検索機能を手軽に追加したい場合や検索システムとしてそのものを導入したい場合など向け。

  • Fess
  • namazu (実用的なUIかは微妙、今となっては性能面も微妙)
  • Google Search Appliance, ConceptBase, QuickSolution, WiSE, SAVVYなどの各種商用検索サーバ (検索エンジンとして切り出して提供しているものもあるが…)

という感じかと思います(何かあればご指摘ください)。
そんなわけなので、FessはSolrやElasticsearchと目指すところは異なりますし、より多くの人が手軽に利用できるものを目指しています。なので、競合は商用の検索サーバたちと言えるでしょうか。まぁ、FessもN2 Searchとして商用提供はしているので。

Fess 9.1のリリース

あれこれと時間が取られて、一つずつ処理するのに時間を取られ、そろそろニュータイプとして覚醒したいと思う今日この頃。そんな感じですが、Fess 9.1をリリースしてます。ここからダウンロードができます。今回は、Solr 4.7を採用していますがそれ以外には

  • Java 8対応
  • Webスクレイピング
  • コンテンツキャッシュ表示機能

などが主なところです。それ以外にもサジェストの改善とか細々としたことはいろいろとあります。あとはガラケーの機能をこのバージョンからなくなっています。そろそろFessもグローバルにやっていこうかと考えているので、海外でガラケー機能を説明するのが面倒だった感じです。次のバージョンでは、サジェストとか辞書周りとかが改善ポイントかと考えています。そんな感じですが引き続きよろしくおねがいしますー。

Fess 9.0リリース

リリースしました。ここから取得できます。四半期くらいでリリースしていきたいところでしたが、今回はいろいろと大きな変更を入れたので、半年近く時間がかかってしまいました。まぁ、いろいろな案件をこなしながら、ブラッシュアップしてきている感じではありますが。大きなところをまとめておくと、

  • ジョブ管理機能

以前はクロールのスケジュールはバッチなどを組まないと複数実行できなかったのですが、Fess 9では任意のジョブを組めるようにしました。ですので、クロールのスケジュールを指定すると言うよりは実行したい処理をジョブとして管理画面から登録する感じになります(まだ、ドキュメント不足感はありますが…)。ジョブを記述する言語は現時点ではgroovyをサポートしています。いろいろな言語をサポートできる気はしていますが、将来的に必要に応じて考えていこうと思います。

  • サジェスト

今回のリリースからは独自のサジェストを搭載しています。今まではSolrの機能に依存するサジェストでしたが、あの機能では日本語環境ではあまりに厳しいものがあります。というわけで、サジェストのデータはSolrにストアするものの機能自体は独自になっています。Fess 9ではクロールしたコンテンツのデータだけを元にサジェストをしていますが、次のバージョンでは検索ログ等の情報を含めてFess側でサジェストを構築する予定です。そんな感じで、この辺は今後も磨かれていくことでしょう。

  • ファイルのプロキシダウンロード

ファイルシステムや共有フォルダをクロールすると、file:〜のリンクになりますが、近年のブラウザのセキュリティ強化により検索結果上でfile:のリンクを表示してもクリックしたところで何も反応しないため、なかなか厳しい状況にありました。以前のリリースまでは標準ではJavaアプレットによりファイルを直接開く方法を採用していましたが、それはそれで厳しい状況になってきたため、今回のリリースからはFess自体でプロキシしてコンテンツを返すことにしました。つまり、ファイルシステムや共有フォルダに対して、それらを公開するウェブサーバなどを別途立てなくてもFess単独でコンテンツを返却することができます。ロール検索についても認証情報が適用されるので、不要なコンテンツはダウンロードできないようになっています。

  • Solr 4.6.1

利用しているSolrのバージョンを更新しています。SolrCloudなどの環境でも利用しやすい感じになっています。

  • リアルタイムにクリック数とお気に入り数の反映

今まではクリック数やお気に入り数は再インデックス後に反映されていました。今回のリリースではLuceneのdocValueを利用することで再インデックスをすることなく、それらの値が更新されリアルタイムに利用することができます。

  • 辞書管理

ユーザー辞書と同義語辞書について管理画面で変更することができるようになりました。ただし、編集時に辞書情報をメモリー上にロードするため、辞書のサイズ分のメモリが編集時には必要になります(数分利用しないとメモリーは解放されます)。また、Solrの辞書の場合は辞書を更新すると再起動が必要になるかと思いますが、Fessでは再起動をすることなく、辞書情報が更新されると反映されます。ただし、形態素解析等では単語の区切り方が変わるため、再インデックスが必要になる場合があります。という感じで、辞書周り全体の機能が強化された感じですが、将来のリリースではSynonymFilterまわりの日本語問題が残っているので対応したいと考えています。

大きなところはそんな感じでしょうか。その他にもAPI周りを大きくリファクタリングしたり、SolrCloud対応とかいろいろとある感じかと。次はFess 9.1を考えていますが近いうちにリリースしたいと考えています。