Senna

曖昧さ回避 この項目では、全文検索エンジンであるSennaについて説明しています。その他の用法については「セナ」をご覧ください。
Senna
開発元 (有)未来検索ブラジル
最新版
対応OS クロスプラットフォーム
種別 全文検索
ライセンス LGPL
公式サイト Senna 組み込み型全文検索エンジン
テンプレートを表示

Senna(せな、Senna: An Embeddable Fulltext Search Engine)は、未来検索ブラジルによって開発されているオープンソース全文検索エンジンである。検索速度が高速なことから、「音速の貴公子」と呼ばれたアイルトン・セナにちなんで名づけられた。

概要

MeCabによる形態素解析の結果を用いた単語ベースのインデックスと、N-gramによるトークン抽出を用いたインデックスの両方を作成することができる。

ライセンスはLGPLUNIX系OS及びWindowsで動作する。

バグフィックスを除いた新たな開発は事実上終了しており、開発元の未来検索ブラジルでは、後継となる検索エンジンとして『groonga』(ぐるんが)の開発を進めている。

特徴

  • 高速なインデックスの更新
    一般的に、作成済みの全文検索インデックスに対する新たなレコードの追加は負荷がかかる。Sennaでは更新のためにバッファを設けたり、転置インデックスデータ構造を工夫して、高速な更新を実現している。
  • 高精度な検索
    単語ベースのインデックスを作成することにより、単語境界と一致する文書を優先的に検索する。よって、適合率の高い検索を行うことができる。適合率の高い検索とは、ノイズの少ない検索のことを指す。
    また、転置インデックスのキーとして、部分一致が可能な単語表を採用している。よって、単語境界と一致しない文書も検索することができる。よって、再現率の高い検索を行うことができる。再現率の高い検索とは、漏れの少ない検索のことを指す。
  • 組み込み型ライブラリ
    Sennaは単体では機能しない、ライブラリ形式として提供される。
    MySQLパッチを当てることによって、MySQLの全文検索機能でSennaを利用することが可能となる。MySQLの全文検索機能は、バージョン5.1までは日本語に対応していないが、Sennaを利用することによって、高速な日本語検索が可能となる。
    PostgreSQLも、Ludiaもしくはtextsearch_sennaを利用することにより、Sennaによる全文検索が可能となる。

バインディング

  • Ruby
    • Sennaを利用できるRubyバインディングが標準で附属している。
  • Perl
    • CPAN::Senna
    • CPAN::Tie::Senna
  • Python
    • Pyrost
    • PySenna
  • Java
    • Senna-Java

PHPバインディングはメンテナンスされておらず、現在のSennaでは利用できない。現在対応版が開発中であり、Sennaのバージョン1.1から利用可能になるとされている。

利用されているアプリケーション

  • MySQL
    • Tritonnを用いて全文検索を行うことができる。
  • PostgreSQL
    • Ludia: NTTデータが開発したPostgreSQLの組み込み全文検索。LGPLに沿ってソースコードが公開されている。
    • textsearch_senna: PostgreSQL 8.3 以降にも対応した組み込み全文検索。

利用されているWebサービス

以下のWebサービスにおいて、Sennaが利用されている。

  • GREE
  • はてな検索
  • タワーレコード商品検索
  • 八重山毎日新聞
  • freeml
  • ○×ソーシャル コトノハ
  • iYappo 携帯サイト検索
  • MyWiki
  • C-BoX
  • pixiv

関連項目

参考文献

  • オープンソースマガジン 2006年4月号 いざ、次世代検索エンジンへ
  • ACM SIGMOD日本支部第35回大会 発表資料

外部リンク

  • Senna 組み込み型全文検索エンジン
  • 表示
  • 編集