FM-Indexによる文書検索ライブラリShellinfordにAutotoolsを導入してみた

先日公開したShellinfordという文書検索ライブラリにAutotoolsを導入してみた。
ShellinfordはFM-Indexというデータ構造を採用している。このデータ構造は文書をBurrows-Wheeler変換してウェーブレット木でインデックスすることでSuffixArrayと同等の機能を非常に小さなデータサイズで実現している。

shellinford - shellinford: succinct document retrieval library - Google Project Hosting

$$ svn checkout https://shellinford.googlecode.com/svn/trunk/ shellinford
$$ cd shellinford
$$ ./configure
$$ make
$$ make check
$$ sudo make install

以上でインストール完了。ちょっと本格的っぽい。
ねんがんの configureを てにいれたぞ!
という感じ。

サンプルとして

$$ cat var/test.txt
Milky Holmes
Sherlock Shellinford
Sherlock Holmes
Nero Yuzurizaki
Nero Wolfe
Hercule Burton
Hercule Poirot
Cordelia Glauca
Cordelia Gray

というファイルの中身を1行1文書としてインデックスする。ファイルが小さいのでインデックスのオーバーヘッドのほうが大きすぎてあまりありがたみを感じないかも。
サンプルコードの動作は以下のとおり。

$$ sample/make_fm_index var/test.txt.fm < var/test.txt
$$ sample/search_fm_index var/test.txt.fm
Holmes
2 hits.
[0]: Milky Holmes(1)
[2]: Sherlock Holmes(1)

Holmesにマッチする文書(というか単語)が2件ヒットした。


なおAutotoolsの導入にあたっては

を参考にした。本書はわりとわかりやすいが時折説明不足な箇所があるのと、古い本なので最新の状況にマッチしてないかも、というのがあったので適宜webから情報を集めて補完しつつ読んだ。11章くらいまで読めばそこそこAutotoolsが使える気がする。

最近の書籍だと

というのもある様子。