Ludia
目次
1 はじめに
LudiaはPostgreSQLに全文検索インデックス機能を追加する拡張モジュールです。 株式会社NTTデータにより開発され、 2006年10月11日にLGPLライセンスのオープンソースソフトウェアとして公開されました。
検索エンジンには Senna を利用しています。 Senna はn-gramインデックスと単語インデックスの特徴を兼ね備えた、 高速かつ高精度な転置インデックスタイプのエンジンです。
2 特徴
- データベースのビルトインのインデックス機能と 共通のインタフェースで扱うことができるので、 検索エンジンをあまり意識しなくてすみます。 つまり、 CREATE INDEX 文で全文検索インデックスを作成し、 DROP INDEX 文で全文検索インデックスを削除します。 検索条件は WHERE 句の中に記述します。 全文検索インデックスファイルは、 データベースクラスタ内に作成されます。 テーブル空間を利用して作成先を変更することも可能です。
- 複数のテーブルカラムにそれぞれインデックスを作成し、 検索条件を AND や OR で組み合わせて指定することで、 複雑な検索を実行することができます。 もちろん、全文検索以外の条件と組み合わせた問い合わせを行うこともできます。
- 式に対するインデックス を利用すれば、 テキストを加工したり、テキストの一部だけを対象にして、 全文検索インデックスを作成することもできます。
- 日本語を、あまり意識せずに扱うことができます。 インデックスアクセスメソッド 名の使い分けで、 分かち書きに2-gramと形態素解析のどちらを使うか選ぶことができます。 分かち書きについては MeCab が利用されています。
- 検索文字列にSennaの演算子やプラグマを指定することで、 高度な全文検索機能を利用することができます。 「検索スコア」を取得して、 ソート条件やフィルタ条件として利用することができます。
3 対応プラットフォーム
Ludia 1.4.0 は、以下の環境で開発と動作確認が行われました。
| OS: | RedHat Enterprise Linux AS[ES] 4 |
|---|---|
| DBMS: | PostgreSQL 8.2.5 (8.1.10) |
| Senna: | 1.0.9 (1.0.7以前のバージョンには対応していません) |
| MeCab: | 0.96 |
PostgreSQLについては 8.1 と 8.2 で動作します。 (開発中の 8.3 でも一応ビルドして動かすことはできます。) また、Sennaのバージョンが 1.0.8 以降であることが必要です。 Linux以外にも、Debian、MacOS X、FreeBSDでの動作報告もあります。 ver.1.2.0からはWindowsでもそのままビルドできるようになっています。 Windows環境での利用 を参照してください。
4 ダウンロード
ソースアーカイブ一覧 から必要なバージョンをダウンロードしてください。 ludia-withdepsというパッケージは、 Ludiaを利用するために必要な Senna と MeCab のソースアーカイブを含んでいます。
6 メーリングリスト
疑問点や要望などがあれば、 Ludia-usersメーリングリスト に投稿してください。 (メールを投稿するにはMLへの参加が必要です。) また情報源として、 Sennaのメーリングリスト にも あわせて入っておくことをおすすめします。
8 利用事例
ここに掲載させていただける事例を募集中です。 ぜひ Ludia-usersメーリングリスト にメールください。
テクノマークメール- テクノマークメール はNTTデータ先端技術株式会社様が提供する マルチチャネルカスタマーサポートツールです。 Eメール/電話/FAXといったマルチチャネルのコンタクトセンターのシステム化を実現できます 。 バージョン1.84で検索機能を強化するためにLudiaが採用されました。
EBICE2.0- 株式会社アセンディア様による ブログ/SNS/CMS 統合エンジン EBICE2.0 です。 ブログ/コミュニティ/CMSコンテンツの全文検索にLudia利用されています。 オプションとしてTextPorterを用いた添付ファイル検索機能もあるそうです。
Biz-Com- 有限会社インシエメ様による情報共有ツール Biz-Com です。 SNSの要素を取り入れ、社内向けに特化した情報共有ツールとのことで、 検索機能にLudiaが利用されています。 リンク先は開発中のサンプル版です。
buzztter- 特定のキーワードを発言しているユーザ数の取得に利用されています。 また類似文書検索機能も使っているそうです。 はてなダイアリーの buzztter.comの舞台裏について のエントリで解説を読むことができます。
9 ToDo
- トランザクション対応
- もっとちゃんとしたコストの推定値を返す
10 リンク
10.1 Ludiaと関係するOSS
全文検索エンジン Senna のホームページです。 全文検索クエリの仕様など、 検索エンジンそれ自体についての細かい情報が知りたい場合は、 こちらを参照してみてください。
SennaのMySQLバインディングです。 Ludiaと同様に、Sennaを利用した全文インデックス機能をMySQLに追加します。 MySQLのソースコードに対するパッチの形態で提供されています。 ver.1.0.3からはパッチ適用済みのMySQLのソースコードとして配布されているようです。
uchiuchiyamaさんによるRailsプラグインです。 Ludiaの検索機能をRuby on Railsから簡単に利用することができます。
10.2 Ludiaと多少関係するOSS
NTTデータで開発されたPostgreSQL関連のプロダクトを まとめて使いやすくしたものです。 Ludiaもその一部として含まれています。 また、ときどき開催されるハンズオンセミナで、 Ludiaをさわることができます。
NTTデータオープンソース開発センタで開発された オープンソースの統合運用管理ツールです。 ポータルサイトの見た目など、勢いが感じられます。
10.3 記事など
ThinkIT連載 『高性能なオープンソース全文検索システム「Ludia」 』
Ludiaがどんなものかという説明から始まり、 インストール方法と基本的な使い方や、 実際的な利用におけるポイントなどを解説しています。
MySQL/PostgreSQL+Sennaで行うラクラク全文検索……Tritonn&Ludia導入のポイント
Senna開発者の末永さんによる記事です。 インストール方法と簡単な使い方、Tipsなどが紹介されています。
![音楽ダウンロード、音楽配信&試聴サイト - MySound [マイサウンド]](/cgi-bin/moin.cgi/LudiaFrontPage?action=AttachFile&do=get&target=logo_mysound.jpg)
