KenJa (検索エンジン by Java)

blog記事検索: by 人気blogランキング
(文書数500万件以上、現状の仕様ではN-gramの限界に達した為、形態素解析mecabを利用)
サイト検索: by 人気Webランキング
(N-gram検索)
掲示板検索: by The.Tower
(N-gram検索)
▼概要:
	100% Javaで構成されたマルチプラットフォームな全文検索エンジンです。

▼作者:
	info@with2.net 2003/11/11

▼特徴・メリット:
	指定文書のインデックスを作成し、クエリサーバ(daemon)が検索を処理するタイプの検索エンジン。
	結果を表示するCGIはTCP/IP通信できる言語なら何でも可。(C,Perl,PHPなど)
	日本語辞書ファイルを必要としない。(N-gramモデルの採用)
	キャッシュを利用し、2回目からは高速に検索できる。(前方一致などは無効、メモリの空き状況によりキャッシュサイズを自動調整)
	Javaによるマルチプラットフォームを実現。(インデクシングにLinux、クエリサーバにSolarisとかもOK。もちろんWinやMacでも)
	UTF-8によるインデクシングでマルチランゲージを実現。(中国語、韓国語もOK)
	小規模から中規模程度に対応できるスケーラビリティを確保。(文書数50万ぐらい)
	中間インデックスを作成することにより文書の追加、削除が容易。(全て作り直す場合の約50%の時間)
	中間インデックスはマージ可能。複数のサーバで並列処理したインデックスを後でまとめる事ができる。その場合もプラットフォームには依存しない。
	中間インデックスの状態でも検索可能。
	文字種ごとにN-gramの値を変更可能。
	N-gramの採用により検索漏れがない。

▼デメリット:
	形態素解析に比べてキーワードと位置情報が増加する。(bi-gramで総ファイルサイズの1.5〜2.5倍のサイズ)
	インデクシング時間の増加。(文書数80000件で約20分、中間ファイルがある場合は約10分 : CPU=1.7GHz,mem=300MB)
	前方一致や指定項目の検索は遅くなる。
	tri-gramを採用することで検索速度は向上するが、インデックス作成時間がかなり長くなってしまう。
	検索ノイズの発生。例:『京都』で検索 → 『東京都』

▼今後の課題・その他:
	[課題] 文書番号の取り出し方に工夫が必要。検索結果の件数と文書の取り出しのロジックは別に準備するべき。
	[課題] インデックスへの文書の追加、削除の最適化。(現行の仕様では掲示板などリアルタイムなデータの更新が難しい)

▼参考サイト
	・日本語全文検索エンジンソフトウェアのリストN-gramモデルを利用したテキスト分析 

@Withトップへ