全文検索システムhyperestraier

lgrepの挙動が寂しくってパッチを充てようとしたのだが挫折
rastをインストールしようとしたら本体のページが無くなってるのに気がついて不安に思い別の検索システムを発見。

速そうな気配がしたので早速インストール

#aptitude install hyperestraier libestraier-ruby1.8

インデックスを作成する。

 estcmd gather -il ja -sd casket .

7Mのテキストに対してのインデックス作成時間が5秒。恐ろしい。
出来たインデックスは9Mの容量だった。まあ、Nグラムだからしょうがないよな。富豪で行こう。

コマンドラインから検索。

ファイル名の一覧付き検索
$ estcmd search -ic EUC-JP -vu ./casket/ "代替 AND 選択" | nkf -e

ファイル名だけの出力はまだ出来てない。これが出来ないとgrepの代わりにはならない。

ヒット近傍表示付き検索
estcmd search -ic EUC-JP -vh ./casket/ "代替 AND 選択" | nkf -e

コマンドラインで動かすとヒットワードの強調表示がないので寂しいな。その辺が課題か。

文字コード

$ export fn="1";echo "汽車で帰社した貴社の記者"|nkf -e|tee $fn.euc.txt|nkf -s|tee $fn.sjis.txt|nkf -j|tee $fn.jis.txt|nkf -w>$fn.utf.txt
$ export fn="2";echo "隣の客は良く柿食う客だ"|nkf -e|tee $fn.euc.txt|nkf -s|tee $fn.sjis.txt|nkf -j|tee $fn.jis.txt|nkf -w>$fn.utf.txt
$ time estcmd gather -il ja -sd casket .
estcmd: INFO: reading list from the directory: .
estcmd: INFO: status: name=casket dnum=0 wnum=0 fsiz=6899176 crnum=0 csiz=0 dknum=0
estcmd: INFO: 1 (.../work/hyperestraier/kanjicodetest/1.euc.txt): registered
estcmd: INFO: 2 (.../work/hyperestraier/kanjicodetest/1.jis.txt): registered
estcmd: INFO: 3 (.../work/hyperestraier/kanjicodetest/1.sjis.txt): registered
estcmd: INFO: 4 (.../work/hyperestraier/kanjicodetest/1.utf.txt): registered
estcmd: INFO: 5 (.../work/hyperestraier/kanjicodetest/2.euc.txt): registered
estcmd: INFO: 6 (.../work/hyperestraier/kanjicodetest/2.jis.txt): registered
estcmd: INFO: 7 (.../work/hyperestraier/kanjicodetest/2.sjis.txt): registered
estcmd: INFO: 8 (.../work/hyperestraier/kanjicodetest/2.utf.txt): registered
estcmd: INFO: flushing index words: name=casket dnum=8 wnum=1 fsiz=6902173 crnum=22 csiz=1337 dknum=0
estcmd: INFO: closing: name=casket dnum=8 wnum=23 fsiz=6902572 crnum=0 csiz=0 dknum=0
estcmd: INFO: finished successfully: elapsed time: 0h 0m 0s

real    0m0.292s
user    0m0.010s
sys     0m0.060s
$ ls
1.euc.txt  1.jis.txt  1.sjis.txt  1.utf.txt  2.euc.txt  2.jis.txt  2.sjis.txt  2.utf.txt  casket
$ time estcmd search -ic EUC-JP -vh ./casket/ "記者 AND 貴社" | nkf -e
--------[02D18ACF6B3B38F1]--------
VERSION 1.0
NODE    local
HIT     4
HINT#1  記者    4
HINT#2  貴社    4
TIME    0.000385
DOCNUM  8
WORDNUM 23
VIEW    HUMAN

--------[02D18ACF6B3B38F1]--------

URI: file:///home/.../work/hyperestraier/kanjicodetest/1.euc.txt
Title: 1.euc.txt

汽車で帰社した貴社の記者 ...


--------[02D18ACF6B3B38F1]--------

URI: file:///home/.../work/hyperestraier/kanjicodetest/1.jis.txt
Title: 1.jis.txt

汽車で帰社した貴社の記者 ...


--------[02D18ACF6B3B38F1]--------

URI: file:///home/.../work/hyperestraier/kanjicodetest/1.sjis.txt
Title: 1.sjis.txt

汽車で帰社した貴社の記者 ...


--------[02D18ACF6B3B38F1]--------

URI: file:///home/.../work/hyperestraier/kanjicodetest/1.utf.txt
Title: 1.utf.txt

汽車で帰社した貴社の記者 ...


--------[02D18ACF6B3B38F1]--------:END

real    0m0.007s
user    0m0.000s
sys     0m0.010s

見事に漢字コードの差異を吸収してる。lgrep忘れようかな・・・って問題はインデックスの作成タイミングだな・・・・