[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
grep は毎回すべてのファイルを開いて文字を検索するため,ファイル の数が多くなると,遅いという欠点があります.そこで,あらかじめ目次 (インデックス) を作っておき,そのファイルをもとに検索を行う方法があります.これにより, 1 万以上 といった大量のファイルでも一瞬で検索できます.
などの検索エンジンを始め,この方式を使った検索ソフ トは多数あります.
日本では,無料で利用でき,日本語の文書もある namazu が広く利用されています.
ここでは, namazu と Meadow での検索方法について紹介します.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
kakasi,Perl,namazu をインストールするフォルダはスペースや日本語が含まれたフォ ルダには*しないで*ください.
Program Files などに入れると動かない可能性があります.
http://www.namazu.org/windows/ から, kakasi (kakasi-2.3.4.zip) をダウンロー ドします.
そして, kakasi を解凍し, 適当なフォルダへコピーし,パスを通します (以下, c:/unix に kakasi をコピーしたとします) .
パスの通し方は, Windows 2000 ならマイコンピュータのプロパティを開き, 詳細→環境 変数→システム環境変数→ Path を開き, c:/unix/kakasi/bin;(kakasi をコピーしたフォ ルダに合わせてディレクトリは変更) を一番前に追加します.
さらに,以下を追加します
Windows98 なら, autoexec.bat に以下を追加します
SET KANWADICTPATH=C:/unix/kakasi/share/kakasi/kanwadict SET ITAIJIDICTPATH=C:/unix/kakasi/share/kakasi/itaijidict SET PATH=C:/unix/kakasi/bin;"%PATH%" set LANG=ja_JP.SJIS
http://www.namazu.org/windows/から, Perl (ActivePerl-5.6.1.633-MSWin32-x86.msi) をダウンロードします.
そして,インストーラを起動します.後は Next (次へ) を押していくだけでインストールで きます.
http://www.namazu.org/windows/から, 自己解凍型の namazu (nmz2012.exe) をダ ウンロードします.
後は,実行するだけでインストール完了です. エラーが出なければ問題ありません. 途中 で, Perl module をインストールするか聞かれますので, y と答えてください.
これですべて完了です.
次に検索を行うために,インデックスを作成します.
C:/namazu/bin/mknmz.bat -O c:/dic/namazu/index/ c:/soft/
のようにすると, c:/soft/ 下のファイルのインデックスを c:/dic/namazu/index/ に出 力してくれます.こういう風にして,検索したいフォルダのインデックスを作っておきま しょう. インデックスの更新も同じコマンドでできます.
毎回, こんなのを入力するのは面倒なので, これを index.bat など拡張子が bat のファ イルに上のコマンドを入力し保存しておくと, ダブルクリックだけで, インデックスの作 成・更新ができます.
インデックスができたら
namazu "meadow" c:/dic/namazu/index/
で検索することができます.
私はインデックスの作成は
mknmz.bat -U -O d:/dic/namazu/index/www/ -F D:/dic/namazu/index/config/search.lst |
という風にして, search.lst に
d:/home/www/ d:/home/info/ d:/home/memo/ |
という風に namazu で検索したいディレクトリの一覧を書いています.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Meadow から namazu を利用して検索する方法を紹介します.
52.2.1 namazu で検索 ― namazu.el (2005/02/18) 52.2.2 namazu を w3m で検索 ― w3m-namazu.el (2003/07/05)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
namazu は便利なソフトですが,毎回コマンドラインから使うのでは使いものになりません.
Meadow からファイルを検索できます.検索されたファイルはそのまま Meadow で開くこ とができますので,すぐに編集などをすることができます.
namazu.el を使います.これは namazu に附属 (c:/namazu/share/site-lisp/namazu) していますので,ロードパスの通っ たところへコピーします.
以下を, .emacs に追加します.
(setq namazu-search-num 100) ;; 1 ページに表示する結果数 (setq namazu-auto-turn-page t) (autoload 'namazu "namazu" nil t) ;; インデックスのディレクトリ ;; 複数あればスペースで区切る (setq namazu-default-dir "c:/dic/namazu/index/www/ c:/dic/namazu/index/mail/") |
これで, M-x namazuで検索できます. 複数のインデクッスを切り替えたければ, C-u M-x namazuでディレクトリを指定します. 毎回, 同じディレクトリを指定する のが面倒なら,
(setq namazu-dir-alist '(("doc" . "C:/dic/namazu/index") ("mail" . "C:/dic/namazu/index/mail C:/dic/namazu/index/news"))) |
と指定しておき, C-u M-x namazuとすると, doc や mail と指定できるようになり ます.
この namazu.el では検索結果のファイル名のところでRETとするとそのファイルを 表示してくれます. この関連付けは以下のように変更できます.
(setq namazu-view-function-alist '( ("[^/]+\\.s?html?" . namazu-browse-url) ;;("[^/]+\\.s?html?" . w3m-find-file) ("[^/]+\\.s?txt?" . namazu-view-file) ("wired/.*/[1-9][0-9]*$" . w3m-find-file) ("/Mail\\|News/.*/[1-9][0-9]*$" . namazu-view-msg) ("man/man" . namazu-man) ("[^/]+\\.s?doc?" . namazu-browse-url) ("[^/]+\\.s?PDF?" . namazu-browse-url) ("." . namazu-view-file))) |
こんな設定で Word や PDF は fiber で起動するようにしてます. emacs-w3m がインストー ルされていれば, コメントのようにすると, emacs-w3m で見ることができます.
最新の Meadow では固まることがあるようです.その場合には, namazu.el を試してみてください.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
w3m を利用して namazu を検索できます. namazu.el が動かない場合や好みに合わない場合な どに使うといいでしょう.
w3m と w3m.el が正しくインストールされていれば,M-x w3m-namazu で namazu を使って検索することができます.
namazu.el を使っていれば,特に設定しなくても, namazu.el の設定を使って検索でき ます. namazu.el を利用していなければ,以下のように設定しておきます.
;; 結果を表示する数 (setq w3m-namazu-page-max 30) ;; インデックスのリスト (setq w3m-namazu-index-alist '( ("2ch" "d:/namazu/index/2ch/") ("www" "d:/namazu/index/www/") ("mail" "d:/namazu/index/wwwmail/") ("pc" "d:/namazu/index/misc/"))) ;; M-x w3m-namazu で検索するインデックス (setq w3m-namazu-default-index "d:/namazu/index/mywww/") |
M-x w3m-namazu で検索できます.C-u M-x w3m-namazu とすると, w3m-namazu-index-alist で指定したディレクトリを選ぶことができます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
古い Meadow/Emacs では動作しませんので,ご注意を.
namazu で検索すると分かるのは,そのファイルの中にその文字があるかもしれないとい うことだけです.どこにあるかは分かりませんし,インデックス作成後に編集してしまい, 既になくなっているかもしれません.
そのため, namazu で検索後に isearch や occur などで,再度検索することになります. これはかなり面倒です.
namazu で検索した結果に色が付きます.さらに,ファイルを開くとカーソルは最初の一致 箇所に移動しますので,手動で検索する必要がありません.
color-occur.el と color-namazu.el をダウンロー ドし,ロードパスの通ったところへ置きます.
以下を .emacs に追加します.
(load "color-namazu")
|
普通に namazu を実行するだけです.こうすると,
ということができます.
さらに,RETでファイルを見ると,以下のスクリーンショットのように,一致した 箇所がすぐに分かります.
さらに,ファイルを表示後に,oとすると,一覧表示のスクリー ンショットのように,どの行が一致したのかを一覧できます.
起動時には色がついてない方がいいならば,
(setq colorful-namazu-mode nil) |
を追加してください.色をつける/つけないの切り替えは,t でできます.
私は凝った検索をしないので, namazu の書式には適当にしか対応していません.一応, and や or などで検索しても大丈夫なはずですが,うまくいかないかもしれません.また, 前方一致などは検索語 +1 文字の色を変えてるだけの手抜きです.
namazu の結果一覧へ追加したもの
ファイル表示画面
occur の画面
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
ローカルで CGI を利用できるのであれば,ブラウザから検索したいこともあります.ここ では,その方法を紹介します.
以下, Apache で導入した時のメモです.
まず cgi-bin ディレクトリ (Apache で設定した場所) に namazu.cgi.exe を namazu.cgi と改名して置きます.そして, namazu.cgi を置いたディレクトリに設定ファイル .namazurc を作成します.
以下は.namazurc のサンプルです.
## インデックスファイルのディレクトリ Index C:/home/dic/namazu/index ## インデックスファイルとは別の場所に ## NMZ.{head,foot,body,tips,result} ファイルをおいている場合, ## そのディレクトリを指定する Template C:/home/dic/namazu/index/ ## 検索対象のディレクトリと, その URL を指定 ## これがないと, c|home/news... という風にパスがそのまま表示されてしまう ## WWW サーバを動かしているとこれでは表示できないので, ## パスを URL に書き変えないといけない. 環境に応じて変更が必要 Replace /c\|/home/ http://127.0.0.1/namazu/ ## NMZ.slog へのログの記録の許可 (on=許可, off=不許可) Logging on ## "ja_JP.eucJP","ja_JP.SJIS","de"などの ## ロケールコードを設定. Lang ja_JP.SJIS ## スコアリング方式の"tfidf"か"simple"を選択 Scoring tfidf ## キーワードを強調するタグを設定 #EmphasisTags "" " |
ここまでうまくいっていれば, http://127.0.0.1/cgi-bin/namazu.cgi にアクセスすると namazu のページが表示されます. 検索もできます. この画面を編集するには NMZ.*.ja を直接編集すれば可能です.
インデックスが 1 つでは不便なので, インデックスを増やしましょう.
まず, インデックスのディレクトリを作ります. ここでは, ~/namazu とします. さらに, ~/namazu 下にサブディレクトリを作成します.
~/namazu + mail + www |
のように, ~/namazu 下に mail と www というサブディレクトリを作成します. で, この サブディレクトリ下にそれぞれインデックスを作成します. さらに, どちらのディレクト リのファイルでもいいので, NMZ.*.ja を ~/namazu にコピーしておきます. .namazurc では ~/namazu を Index と Template に指定しておきます.
NMZ.head.ja の好きな位置 (いちばん最後がいいかな) に
<strong>対象インデックス |
を追加します. value はサブディレクトリの名前に合わしてください. これで, http://127.0.0.1/cgi-bin/namazu.cgi を表示すると, インデックスを選ぶことができま す.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |