« 救いはどこ? 東野圭吾『白夜行』 | Main | まちえいで『オペラ座の怪人』を観る »



Thu, 06 Apr 2006

HE-grep を使って howm のデータを検索する on xyzzy

Posted at Thu, 06 Apr 2006 in computer::xyzzy

howm-helper を使って howm の検索を grep に任せることで以前よりもだいぶ早くはなったのですが、それでもやっぱりもたつきが気になるときがあります。
なのでちょっとアプローチ方法を変えて、howm ではなく HE-grep で howm のデータを検索してみることにしました。
HE-grep は Hyper Estraier という全文検索エンジンを使って Grep を行うための xyzzy 拡張 Lisp です。

検索エンジンがちがうだけで要は Grep なので、howm の検索とは別物です。

手順としては

  1. HE-grep を Netinstaller でインストール
  2. HyperEstraier をインストール
  3. howm ディレクトリのインデックスを作成
  4. 検索実行

という感じ。

HE-grep を Netinstaller でインストール

xyzzy の Netinstaller から HE-grep をインストールします。手動でインストールする場合は、HE-grep.l のページからダウンロードしてください。

HyperEstraier をインストール

Hyper Estraier のホームページ からWindows版のバイナリパッケージ(例:hyperestraier-1.1.6-win32.zip )をダウンロードして適当なディレクトリに解凍し、そのディレクトリにパスを通します。(Windows XP の場合、マイコンピュータ右クリック - プロパティから「システムのプロパティ」を起動し、「詳細設定」タブの「環境変数」ボタンから、環境変数 Path にそのパス(estcmd.exe が存在するディレクトリのパス)を追加します(なければ新規作成))

インデックス作成のための設定

Hyper Estraier はインデックスを使って全文検索を行うので、検索する前にインデックスの作成を行う必要があります。インデックスの作成は HE-grep の機能にあるのですが、そのための設定を .xyzzy (または siteinit.l)に記述します。

(setq *HE-make-index-command-list*
      '(
	(
	 "C:/casket"
	 "C:/bin/xyzzy/howm"
	 "estcmd gather -pc CP932 -ic CP932 -cl -fh -sd -cm"
	 "estcmd purge"
	 "estcmd optimize"
	 "howm(&h)"
	 )
"c:/casket"
インデックスファイルの保存場所を指定します。任意のディレクトリで OK
"C:/bin/xyzzy/howm"
howm データの保存ディレクトリを指定します
"estcmd gather -pc CP932 -ic CP932 -cl -fh -sd -cm"
インデックス作成用のコマンド。
"estcmd purge"
ファイルシステムから削除されたファイルをインデックスに反映させるコマンド。nil(実行されない) でも可
"estcmd optimize"
インデックスの最適化を行うコマンド。nil でも可
"howm(&h)"
メニューに表示される名前(任意)

検索のための設定

作成したインデックスを使って検索するための設定を .xyzzy (または siteinit.l)に記述します。

(setq *HE-command-list*
      '(
	(
	 "howm(&h)"
	 "C:/casket"
	 "estcmd search -sf -ic CP932 -vh -max -1"
	 "C:/bin/xyzzy/howm"
	 )
	))
"howm(&h)"
メニューに表示される名前(任意)
"C:/casket"
インデックスファイルの保存場所。上で指定したのと同じディレクトリを指定します
"estcmd search -sf -ic CP932 -vh -max -1"
検索用のコマンド。このままでOK
"C:/bin/xyzzy/howm"howm
データの保存ディレクトリ

howm ディレクトリのインデックスを作成

xyzzy を再起動して、M-x HE-make-index と実行します。(M-x = Alt + x)ポップアップメニューが出てくるので howm を選択して、しばらく待つとインデックスの作成が完了します。

検索実行

M-x HE-grep と実行して、ポップアップメニューが出てきたら howm を選択します(2度目以降は出てこない)。検索文字列を入力して Enter を押すと検索が実行されます。

速度は?

grep を使うのと比べるとまぁまぁ速くなりました。grep だとコマンドプロンプトがぴょこっと出るだけでじーっとまたされますが、現在検索しているファイルがメッセージに表示されるので、体感速度がけっこうちがいます。

検索画面

« 救いはどこ? 東野圭吾『白夜行』 | Main | まちえいで『オペラ座の怪人』を観る »