組み込み型全文検索エンジンSenna はご存知ですか?
プレスリリース文を引用しながら紹介します。
■高速全文検索エンジンSenna 1.0.0 リリースのお知らせ
有限会社未来検索ブラジル(東京都渋谷区 代表取締役:深水英一郎)が組み込
み型全文検索エンジン「Senna(せな)」のメジャーリリース版(1.0.0)を公開しま
したのでお知らせいたします。
●Sennaについて
Sennaはオープンソースの組み込み型の全文検索エンジンです。DBMSやスクリプ
ト言語処理系等に組み込むことによって、その全文検索機能を強化することがで
きます。従来より先進的なITベンチャーを中心に数多くの商用サイト・製品に
採用された実績を持っています。
* タワーレコード商品検索
* ニコニコ動画
* GREE
* はてな検索
* freeml
* 2ちゃんねる検索
* ○×ソーシャル コトノハ
* iYappo 携帯サイト検索
見ていただければわかるように、はてなや2ちゃんねるなど、情報量もアクセス数も多いサイトで利用実績があります。
* NTTデータ Ludia
Ludia は PostgreSQLに、高速かつ高精度な全文検索機能を提供するソフトウェア。
PostgreSQL テーブル内のテキストデータに対する全文検索インデックスを作成し、高速かつ高精度な全文検索機能を、PostgreSQLの通常のインデックスと共通のインタフェースから利用できるようにするものです。
●特徴
Sennaの技術的な特徴は「組み込み型」「高精度」「高速・即時更新」です。
・組み込み型
SennaはMySQLやPostgreSQL等のRDBMSに組み込んで使用することができます。既
存のテーブルに簡単に全文検索インデックスを付与し、自然なSQL文で検索が行
えます。複雑なデータ構造やクエリを自由に表現できるRDBの強みを生かしたま
ま、本格的な全文検索アプリケーションが構築できます。
・高精度
Sennaはインデックスのサイズが比較的小さくて適合率が高いという単語イン
デックス方式のエンジンの特徴を備えつつ、高速な部分一致検索が可能な語彙表
を用いることによって、検索洩れを少なく抑えることも可能です。適合率と再現
率のどちらを重視するかを検索時にきめ細かく調整することができますので、多
様な検索用途に幅広く使用することができます。
・高速・即時更新
Sennaは、高度なバッファ処理機構を備えており、検索・更新処理とも非常に高
速です。また、更新処理中でも検索処理を同時に実行することが可能です。更
に、削除された領域は自動的に回収されて再利用されるため、一度作成したイン
デックスを作成し直す必要がありません。つまり、次々と増えていく文書を即時
に反映し、高速に検索が行えます。
●メジャーバージョン(1.0.0)リリースについて
Senna1.0.0では転置インデックスの格納形式を改善し、更新/検索速度を損ねる
ことなくサイズを最大で従来比70%程度まで圧縮することに成功しました。この
ため、従来よりも大規模な文書を1台のサーバで管理することが可能となりました。
●参考資料
・「21世紀の最新エンジンたち」
他のオープンソース検索エンジンと比べ、
Sennaはどのような特徴を持つエンジンなのかを解説しています。
・「組み込み型全文検索エンジンSenna」
Sennaの設計方針や具体的な性能に関する記事です。MySQLにSennaを組み込むと、
クエリによっては全文検索の速度が100倍になる様子を解説しています。
・「全文検索エンジンSennaについて」
ACM SIGMOD日本支部第35回大会(データベースの学会)にて
開発者の一人が講演した際の配布資料です。
■関連記事
[ThinkIT] 第1回:蓄積したデータを徹底活用〜全文検索 (2006/12/6)
[ThinkIT] 第2回:データを徹底活用する全文検索機能の仕組みと製品比較 (206/12/22)
[ThinkIT] 第3回:Ludiaの導入準備 (2007/1/25)
DBMSは、PostgreSQL Ver.8.1でのみ動作します。PostgreSQL Ver.8.0以前およびVer.8.2はLudia Ver.0.9では動作しません。PostgreSQL Ver.8.2については、次のバージョンで対応する予定です。
[ThinkIT] 第4回:Ludiaを体験 (2007/1/30)
Sennaは、Ver.0.8.2を導入します。
[ThinkIT] 第5回:Ludiaの多彩な検索機能の秘密 (2007/2/13)
[ThinkIT] 第6回:柔軟に対応できるLudiaの検索機能 (2007/2/28)
未来検索ブラジルがどのような会社か知りたい方は、
ここの周辺情報的(?)な話を参照のこと。
全文検索、Ludia、PostgreSQL、senna、某巨大掲示板
N-gramモデルを利用したテキスト分析
N-gramモデルは、情報理論の創始者として知られるクロード・エルウッド・シャノン(Claude Elwood Shannon 1916-2001)が、考え出した言語モデルです。
スラッシュドット ジャパン | PostgreSQL用の日本語対応全文検索エンジン「Ludia」
Ludiaは商用のデータベース管理ソフトに匹敵する速度と精度を備える」(NTTデータ)としています。Ludiaは、N-gramと形態素解析の2種類の全文検索インデックス方式をサポートし、またブーリアン検索、近傍位置検索、類似文書検索といった検索が可能で、検索結果の合致度を示す「スコア」も提供するそうです。
NTTデータが全文検索エンジン「Ludia」をオープンソースとして無償公開:ITpro
NTTデータは10月11日,同社が開発した全文検索エンジン「Ludia」をオープンソース・ソフトウエアとして無償公開した。オープンソースのDBMS PostgreSQLに格納されたテキスト・データの全文検索を行う。同社では「商用のデータベース管理ソフトに匹敵する速度と精度を備える」としている。
SourceForge.jp: Project Info - Ludia
Ludiaは高速かつ高精度な全文検索インデックス機能をオープンソースのデータベース管理システムであるPostgreSQLに提供します。Ludiaは株式会社NTTデータにより開発され、2006年10月11日にLGPLライセンスのオープンソースソフトウェアとして公開されました。
2007年3月2日に ludia もバージョン 1.0.0がリリースされています。
SourceForge.jp: Ludia 1.0.0 をリリースしました
「Ludia Ver.1.0.0」の変更点は以下の通りです。
(1) PostgreSQL8.2対応、Senna1.0.1対応
PostgreSQL8.1にも引き続き対応しております。
また、使用メモリ削減・インデックスサイズ削減により、
大幅に性能が向上したSenna1.0.1にも対応します。
(Sennaの0.8.2以前のバージョンには対応しておりません。)
(2) Snippet API対応
googleのキャッシュのようにSnippet(KWIC)の作成が可能となりました。
使用方法についてはREADMEを参照ください。
(3) シーケンシャルスキャンの改良
シーケンシャルスキャンの場合も一部のSenna演算子が使用可能となりました。
プランナによってシーケンシャルスキャンが実行される場合や、
インデックスを張っていないカラムに対してSenna演算子を使用したい場合に
役に立つと思います。
(4) インデックスキャッシュの改善
インデックスキャッシュの使用上限が設定可能となりました。
また、使用上限を超えた場合はLRU方式で、
インデックスキャッシュの再利用が可能となります。
(5) インデックス情報取得
インデックスサイズや構築の際のパラメータなどを取得することができます。
PostgreSQL8.2に対応していますね。