KenJa (検索エンジン by Java)
▼概要:
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トップへ