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が使える気がする。
最近の書籍だと
というのもある様子。