全文検索システム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忘れようかな・・・って問題はインデックスの作成タイミングだな・・・・