Hyper Estraier
Hyper Estraier(ハイパーエストレイヤ)は、日本で開発された全文検索エンジンのライブラリである。ライセンスはLGPLで提供されている。
開発元 | 平林幹雄 |
---|---|
最新版 | |
対応OS | クロスプラットフォーム |
種別 | 全文検索 |
ライセンス | LGPL |
公式サイト | 全文検索システム Hyper Estraier |
概要
編集N-gram法を拡張したインデックス方式であるN.M-gram法を採用し、どの言語でも洩れの無い検索が可能になっている。また、MeCabを用いて形態素解析の結果を用いた処理を行うことが出来る。作者は平林幹雄。
バックエンドには、同じ作者によるQDBMを採用、データベースに対するgathererとsearcher、独自のテキスト分析システムで構成される。
文書が持つ複数の属性をインデックスに保存することができる。属性を用いた検索と、全文検索を併用することができる、実用的な全文検索エンジンである。類似文章検索の機能もある。
- Hyper EstraierのAPIを利用したコマンド群
- Webブラウザを通じて検索を行うためのCGI
- 複数台のサーバーのP2Pによる分散処理機能。これにより1000万件以上の超大規模インデックスに対応。
- ウェブクローラー。類似度優先による巡回機能がある。
などが同梱されている。
同作者によるEstraierという全文検索エンジンが存在する。Estraierは形態素解析(わかち書き)に基づいたインデックスを採用している。Hyper EstraierはEstraierを開発した経験に基づいて、新しく開発された全文検索エンジンである。また、Estraierの前は、Snatcherという名称で作成していた。
N.M-gram法
編集N.M-gram法とは、N-gram法を拡張したインデックスのデータ構造である。長さNの文字列と、それに後続する長さMの文字列をキーとしたハッシュ値とがペアとして転置インデックスに保存される。
N.M-gram法を採用することにより、トークンの出現位置情報を持つことなしに、N文字を超える長さの文字列を検索することができる。
Hyper Estraierでは、N=2, M=2でインデックスが作成される。これを2.2-gram法と呼ぶ。
コマンドツール
編集estcmdというコマンドラインツールが付属する。estcmdにサブコマンドをあたえることで、インデックスの作成・更新・検索などの操作を行うことができる。主なコマンドを挙げる。
- create
- インデックスを作成する。その際に新しい属性などを付加することができる。
- edit
- 属性の更新を行う。
- list
- インデックスにある文書のリストを作成する。
- gather
- 既にあるインデックスに新しいデータを追加する。
- search
- 指定されたインデックスから、検索をおこなう。この際、出力形式などを指定することができる。
フィルタ
編集フィルタと呼ばれるテキスト抽出プログラムを利用することにより、プレインテキスト以外のフォーマットで記録されたファイルをインデックスすることができる。現在、公式ではMS OfficeやPDFなどのフィルタを配布している。
P2P機能
編集インデックスを分散して配置することによって、大規模な検索システムを構築することが可能になる。
P2Pの機能を利用する際には、ノードマスタと呼ばれる統括的なプロセスを利用し、そのプロセスが個別のノードサーバーを管理する。アプリケーションは、ノードサーバーと連携し、そのノードサーバーが個別に個々のサーバーと連携することによって、それほど難易度の無いP2P方式での検索が可能になっている。また、このノードサーバーの連携の際に「信頼度」を設定することが出来、これにより、より精度の高い検索が可能になっている。
ノード間の通信プロトコルはHTTPである。
クローラ
編集Hyper Estraierには、各コマンドのほかに、estwaverと呼ばれるウェブのクローラが付属している。このクローラを使うことで、他サーバーで公開されている情報に対するインデックスを作成することができる。
プログラミングとバインディング
編集Hyper Estraierには、CによるAPIを経由して操作することができる。主として、文書の属性を扱うもの、検索条件を扱うもの、データベースを扱うもの、という三つで構成されている。
また、Java、Perl、Ruby、Pythonといった各言語のバインディングも付属し、好きな言語でHyper Estraierを利用できる。
Hyper Estraierを利用したアプリケーション
編集- mod_estraier : リバースプロクシ方式のApacheモジュール
- pgestraier : PostgreSQLからノードサーバを操作するためのインターフェイス
- acts_as_searchable : Ruby on Railsから操作するためのインターフェイス
- Strigi : デーモン型デスクトップ検索ツール
- gdestraier : GNOME環境でのデスクトップ検索ツール
- DesktopHE : Javaで作成された、Windows上で使うデスクトップ検索ツール
- Hyper Estraier Mode on xyzzy
ほかにも、Slashdot日本語版や商品検索SURE-SHOTなどが検索エンジンとして採用するなど、いくつかのサイトで検索エンジンとして利用されている。
外部リンク
編集- 公式サイト
- オープンソースの全文検索システムの速度性能比較(PDF) - 巨大な文書群のインデックス作成において、Hyper Estraierが最速であるとの結果
- N.M-gram : ハッシュ値付き N-gram 法による転置インデックスの実現 情報処理学会研究報告. DBS,データベースシステム研究会報告 140(2), 215-222, 2006-07-14 一般社団法人情報処理学会