Hyper Estraier

Hyper Estraier（ハイパーエストレイヤ）は、日本で開発された全文検索エンジンのライブラリである。ライセンスはLGPLで提供されている。

概要 
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 一般社団法人情報処理学会

全文検索
オープンソースソフトウェア