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を利用するために必要な SennaMeCab のソースアーカイブを含んでいます。

6   メーリングリスト

疑問点や要望などがあれば、 Ludia-usersメーリングリスト に投稿してください。 (メールを投稿するにはMLへの参加が必要です。) また情報源として、 Sennaのメーリングリスト にも あわせて入っておくことをおすすめします。

7   開発リソース

要望やバグ報告などについては トラッキング の方もご利用ください。 (sourceforge.jpのアカウントが必要です。)

8   利用事例

ここに掲載させていただける事例を募集中です。 ぜひ Ludia-usersメーリングリスト にメールください。

テクノマークメール
テクノマークメール はNTTデータ先端技術株式会社様が提供する マルチチャネルカスタマーサポートツールです。 Eメール/電話/FAXといったマルチチャネルのコンタクトセンターのシステム化を実現できます 。 バージョン1.84で検索機能を強化するためにLudiaが採用されました。
ブログ/SNS/CMS 統合エンジン EBICE(エビス)2.0 EBICE2.0
株式会社アセンディア様による ブログ/SNS/CMS 統合エンジン EBICE2.0 です。 ブログ/コミュニティ/CMSコンテンツの全文検索にLudia利用されています。 オプションとしてTextPorterを用いた添付ファイル検索機能もあるそうです。
Biz-Com(仮称) サンプル版 Biz-Com
有限会社インシエメ様による情報共有ツール Biz-Com です。 SNSの要素を取り入れ、社内向けに特化した情報共有ツールとのことで、 検索機能にLudiaが利用されています。 リンク先は開発中のサンプル版です。
buzztter - twitterのイマを切り取ったー☆ buzztter
特定のキーワードを発言しているユーザ数の取得に利用されています。 また類似文書検索機能も使っているそうです。 はてなダイアリーの buzztter.comの舞台裏について のエントリで解説を読むことができます。
音楽ダウンロード、音楽配信&試聴サイト - MySound [マイサウンド] MySound
株式会社ヤマハミュージックメディア様の 音楽ダウンロード、音楽配信&試聴サイト MySound で、 キーワード、アーティスト名、楽曲名、アルバム名からの検索に 利用されています。
ジョブコミ ジョブコミ
長崎の株式会社NDKCOM様のグループウェアです。 Webシステムの操作に不慣れな方も簡単に操作できます。 ジョブコミ 上の様々な情報を検索するための 全文検索エンジンとしてLudiaが利用されています。

9   ToDo

  • トランザクション対応
  • もっとちゃんとしたコストの推定値を返す

10   リンク

10.1   Ludiaと関係するOSS

Senna 組み込み型全文検索エンジン

全文検索エンジン Senna のホームページです。 全文検索クエリの仕様など、 検索エンジンそれ自体についての細かい情報が知りたい場合は、 こちらを参照してみてください。

Tritonnプロジェクト

SennaのMySQLバインディングです。 Ludiaと同様に、Sennaを利用した全文インデックス機能をMySQLに追加します。 MySQLのソースコードに対するパッチの形態で提供されています。 ver.1.0.3からはパッチ適用済みのMySQLのソースコードとして配布されているようです。

acts_as_ludia

uchiuchiyamaさんによるRailsプラグインです。 Ludiaの検索機能をRuby on Railsから簡単に利用することができます。

10.2   Ludiaと多少関係するOSS

PostgresForest Suite

NTTデータで開発されたPostgreSQL関連のプロダクトを まとめて使いやすくしたものです。 Ludiaもその一部として含まれています。 また、ときどき開催されるハンズオンセミナで、 Ludiaをさわることができます。

Hinemosポータルサイト

NTTデータオープンソース開発センタで開発された オープンソースの統合運用管理ツールです。 ポータルサイトの見た目など、勢いが感じられます。

10.4   その他の情報

Ludia開発日記

中の人が書いているようです。

Ludia(TM)のいろいろ

中の人が書いているようです。