[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52. 大量の文書の検索 ― namazu (2007/05/05)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=namazu"
"MeadowMemo/大量の文書の検索―namazu"へのコメント(無し)
検索全文Elisp


この章で紹介していること

grep は毎回すべてのファイルを開いて文字を検索するため,ファイル の数が多くなると,遅いという欠点があります.そこで,あらかじめ目次 (インデックス) を作っておき,そのファイルをもとに検索を行う方法があります.これにより, 1 万以上 といった大量のファイルでも一瞬で検索できます.

http://www.google.com/ などの検索エンジンを始め,この方式を使った検索ソフ トは多数あります.

日本では,無料で利用でき,日本語の文書もある namazu が広く利用されています.

ここでは, namazu と Meadow での検索方法について紹介します.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52.1 namazu のインストール (2007/05/05)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=namazu%20install"
"MeadowMemo/namazuのインストール"へのコメント(無し)
検索全文Elisp

インストールでの注意事項

kakasi,Perl,namazu をインストールするフォルダはスペースや日本語が含まれたフォ ルダには*しないで*ください.

Program Files などに入れると動かない可能性があります.

kakasi のインストール

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

ActivePerl のインストール

http://www.namazu.org/windows/から, Perl (ActivePerl-5.6.1.633-MSWin32-x86.msi) をダウンロードします.

そして,インストーラを起動します.後は Next (次へ) を押していくだけでインストールで きます.

namazu のインストール

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 ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52.2 Meadow から namazu で検索 (2005/02/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=emacs%20namazu"
"MeadowMemo/Meadowからnamazuで検索"へのコメント(無し)
検索全文Elisp

Meadow から namazu を利用して検索する方法を紹介します.

52.2.1 namazu で検索 ― namazu.el (2005/02/18)  
52.2.2 namazu を w3m で検索 ― w3m-namazu.el (2003/07/05)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52.2.1 namazu で検索 ― namazu.el (2005/02/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=namazu%20el"
"MeadowMemo/namazuで検索―namazu.el"へのコメント(無し)
検索全文Elisp

何が問題なのか?

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 ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52.2.2 namazu を w3m で検索 ― w3m-namazu.el (2003/07/05)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=w3m-namazu"
"MeadowMemo/namazuをw3mで検索―w3m-namazu.el"へのコメント(無し)
検索全文Elisp

何ができるのか?

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 ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52.3 namazu.el の検索結果に色をつける ― color-namazu (2005/02/18)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=color-namazu"
"MeadowMemo/namazu.elの検索結果に色をつける―color-namazu"へのコメント(無し)
検索全文Elisp

古い Meadow/Emacs では動作しませんので,ご注意を.

何が問題なのか?

namazu で検索すると分かるのは,そのファイルの中にその文字があるかもしれないとい うことだけです.どこにあるかは分かりませんし,インデックス作成後に編集してしまい, 既になくなっているかもしれません.

そのため, namazu で検索後に isearch や occur などで,再度検索することになります. これはかなり面倒です.

何ができるのか?

namazu で検索した結果に色が付きます.さらに,ファイルを開くとカーソルは最初の一致 箇所に移動しますので,手動で検索する必要がありません.

インストール方法は?

color-occur.elcolor-namazu.el をダウンロー ドし,ロードパスの通ったところへ置きます.

設定方法は?

以下を .emacs に追加します.

 
(load "color-namazu")

詳しい使い方は?

普通に namazu を実行するだけです.こうすると,

ということができます.

さらに,RETでファイルを見ると,以下のスクリーンショットのように,一致した 箇所がすぐに分かります.

namazu に色付けした画面

さらに,ファイルを表示後に,oとすると,一覧表示のスクリー ンショットのように,どの行が一致したのかを一覧できます.

起動時に色をつけない

起動時には色がついてない方がいいならば,

 
(setq colorful-namazu-mode nil)

を追加してください.色をつける/つけないの切り替えは,t でできます.

注意事項

私は凝った検索をしないので, namazu の書式には適当にしか対応していません.一応, and や or などで検索しても大丈夫なはずですが,うまくいかないかもしれません.また, 前方一致などは検索語 +1 文字の色を変えてるだけの手抜きです.

キーバインド一覧

namazu の結果一覧へ追加したもの

ファイル表示画面

occur の画面

変更履歴



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

52.4 WWW から namazu で検索 (2003/10/22)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=www%20namazu"
"MeadowMemo/WWWからnamazuで検索"へのコメント(無し)
検索全文Elisp

何が問題なのか?

ローカルで 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 "<strong class=\"keyword\">" "

ここまでうまくいっていれば, 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>対象インデックス</strong>
<ul>
<li><input type="checkbox"name="idxname"value="mail"checked>メール
<li><input type="checkbox"name="idxname"value="www">Web ページ
</ul>

を追加します. value はサブディレクトリの名前に合わしてください. これで, http://127.0.0.1/cgi-bin/namazu.cgi を表示すると, インデックスを選ぶことができま す.


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]