全文検索エンジンNamazu ver2
全文検索エンジンNamazuについてアレコレ http://www.namazu.org 大量のファイルを処理するにはindexサイズが大きくなりすぎないように することが大切だぞ。 処理中になんどか更新するがとても時間が掛かってしまう あとでマージせよ >>118 ,119 ありがとうございます。インデックスをいくつかに分けて 作成する事にしました。インデックスのサイズが小さいと 時間の掛かり方も全然違いますね。 全部まとめてやるよりも早く終わりそうです。 動的ページ(DBから情報を取得するもの)を検索対象にするために、 wget + Namazu で実際に運用されている方はおられますか? DBから取得した情報も全て静的ページに吐き出してからそれをインデックスするのか、 wgetで全部ダウンロードしてそれをインデックスするのかで悩んでいます。 後者の方が圧倒的にメンテナンスも構築も容易なのですが 実運用で使うに耐えられるものなのかが不安でして…。 宜しくお願いします。 >>121 > 後者の方が圧倒的にメンテナンスも構築も容易なのですが > 実運用で使うに耐えられるものなのかが不安でして…。 と悩みはじめてすでに5年〜♪ >>122 悩むんですよね…。 Namazuのためだけに静的ページ生成を行うというのはどうも。 Namazuだと、ドキュメントルート以下にあるファイルでも Webに公開されていない(リンクされていない)ものも引っかかってしまうので、 そう考えると wget の方が理にかなってるんですよね。 #メルマガなんかで直接URLを通知されるページは元も子も無いですが。。 >>120 最初は一度にまとめてやった方が速いと思うのだろうけど。 例えば5メガずつindexを書き出す場合、今のindexサイズが200メガだったら 後50メガ追加するのに約1ギガの書き込み、消去を行うことになる。 これはとても大変だ。 ただディスクアクセスだけではない。 indexサイズがでかければメモリ、cpuの処理も時間が掛かる。 2006-01-29: Namazu 2.0.15 を公開 ISO-8859-* に関する文書の間違いを訂正 RedHat ソフトウェア namazu.spec の不必要なパッチは削除 File::MMagic 1.25 を同梱 MeCab の正式対応 mknmz に -b 及び --use-mecab オプションを追加 mknmz および namazu に --norc オプションを追加 mknmz に --decode-base64 オプションを追加 新しいフィルタ(Gnumeric, Koffice, Mainman/Pipermail, Zip, Visio)を追加 mknmzrc に MECAB, DENY_DDN を追加 ファイル名がDDN である時にスキップ。 日付フィールドによるソート機能の追加 nmzcat, nmzegrep コマンドの追加 フィルタの Windows 対応 (msword.pl, excel.pl, powerpoint.pl, postscript.pl, 等...) OLE コントロールフィルタ更新 QUERY_STRING の区切りに';' 使用可能 Perl版テストプログラム(pltests) を追加 各種バグフィックス そろそろ入れ換えるかなぁ それとも別のに浮気するか... Debian Sarge で namazu 2.0.14 を使っているのですが、教えてください。 mknmz を -U オプションを付けて、Samba 内のインデックスを作成しているの ですが、職場のパソコンのIEのバージョンにより、動作が異なります。 IE 6.0 では、検索結果の表示、クリックした時にファイルが開けるのですが、 IE 5.5 では、検索結果の表示は正常なものの、クリックしたときにパス名が 文字化けして、うまくファイルを開くことができません。 そこで、両バージョンのIEでファイルが正常に開けるように、検索結果を .namazurc の Replace コマンドで全体を " " で囲む等ということが可能 でしょうか?それとも、もっとよい方法が存在するのでしょうか? よろしくお願いします。m(._.)m >>131 です。 自己レス申し訳ないです。 再度、確認したら、自分の設定がおかしかったか、キャッシュが禍したのか原 因は不明でしたが、いずれのバージョンのIEでもまともに表示し、ファイルを 開くことができました。 確認したこと、.mknamazurc で lang=ja.SJIS、 mknmz -U オプション。 すれ汚し、申し訳ありませんでした。m(._.)m な〜 「Namazu を使った検索ファイルシステム」 http://www.ipl.t.u-tokyo.ac.jp/ ~kaz/ptt/arc/313/313.html って公開されてないのかの〜 >>133 作者に聞いてみたら? Windows は Google、MS、Yahoo! 製があるけど UNIX にはないよね? >>133 研究者連中、面白いものを作っても、 作って論文にしただけで満足して死蔵するケース多すぎ。 公開しようとするといろいろ面倒なのはわかるが、 なんとかならんものかのう。 >>136 > 公開しようとするといろいろ面倒 を136がなんとかしてくれると。 >133 http://www.spa.is.uec.ac.jp/ ~takita/CBNS/ を見てくれ。 …と言いたいところだが、電通大情報システム学専攻のネットワークが切れていて今は見れんようです。 復旧したら見てください。 一応、激しく汚いソース(NetBSD 1.6.2 からの差分)も置いてあります。 はじめてNmazuに挑戦しまた nknmzrc実行後 http:// 〜/namazu.cgiにアクセスするとブラウザが真っ白 ・・・ どこで間違っているのでしょう。 ヒントください OS FreeBSD portsから導入 ブラウザ winXP IE 2006-03-12: Namazu 2.0.16 を公開 * セキュリティフィックスリリース Directory traversal 問題を修正 * 空白を含むファイル名の文書に対応 * NTFS のアクセス権で読み込み許可がないものは処理をスキップするように変更 >>139 インデックスが読み込めていないときにそうなった まずnamazuで結果が出てくるか確認しろ 次にnamazurcの中身を確認しろ >>142 nknmzrc実行後、沢山ファイルが作成された 取り合えず、動作しなくてもいいから表示してほしい・・・ 作成されたファイルの中身を見ようとしたら何も表示されない もしかしてファイル名だけ作成された? まず"namazu (適当なキーワード)" で検索結果がでる? 出なければ~/.namazurcか/etc/namazurcでのインデックスのパスが違う ports@FreeBSDのnamazu2が更新そぞろなも。 Emacsでnamazu.elを使用しているのですが、 出力結果をutf-8にしたいのですが、どの辺をいじれば可能でしょうか なまずでサイズの小さく、検索の早く、漏れのないインデックスの作り方。 なまずにすべての作業を任せずに文字コード変換、Kakasiをあらかじめ 自分でやっておく。 フィルタも使わない。 自分で確実にテキストに変換できたことを確認してからなまずに渡す。 インデックスに登録しないような一語の単語や記号などをあらかじめ削除する。 これでOk> >>148 専用のスクリプトを用意して cron とかで作成させると 効果的なんだろうか? >>149 nkfの最新版(それ以前もたぶん)はUTF-8の文字コードを誤認する。 これをすべてNAMAZUに任せると当然、検索できないindexが作成される。 丹誠込めて念入りにindexを作ることが重要だ。ちゃんと変換できてるとか目で見て。 >>150 ああ、文字コードはそうかもね。 で、どうやって >>148 みたいなフィルタの結果をなまずに渡すの? $ フィルタスクリプト | mknmz とか? ふつうにテキストで固定してindexを作成する。オプションの設定。 なまずは自動判別するからpdfでもhtmlでも中身がテキストなら そうなるけどテキストに固定した方が早い。 >>151 たとえば10000ファイルあったとしたら 構造、拡張子を保ったまますべてのファイルをEUCコードに変換する。 そしてまたすべてのファイルを分かち書きする(-wオプション)。 UTF-8を誤認することは間違いないのだがどれがUTF-8かを見つけるのが苦労する。 データだけ他サーバーに置くことは出来ますか? あと複数のindexを検索するにはどうしたらいいですか。 データだけ他サーバー =>できる。 複数のindexを検索する =>マニュアル夜目。 >>156 でも動作鈍いんですよね? 無料のとくつーにデータ全部おくことにします。 fc2にデータおいて広告なし無料cgi可のページから検索したかったんですけど。 いや、『データ』だけ他のサーバにおくのはかんたんでしょ。読み出せないけど。 少し困っていることがあるので,教えてください. Namazuのログで,検索ワードにヒットした文書ごとの 検索ワードの出現回数TFを出力できたりしますでしょうか? ご教示お願いします. また,タイトル<title>にその検索ワードが使われていたかどうか などもログ出力できると助かるので,そういうことができるか もお教えください. 検索キーワードのログを見たいのですが、設定ファイルを Logging on にするとどこにログが保存されているのでしょうか? また、ログの保存場所を指定するにはどのようにしたらよいでしょうか? NMZ.slogに保存されます。場所はたぶん変えられないかな。 Estraier、NAMAZU、msearch でデフォルトの設定で、 インデックスの作成時の負荷がかかる順に並べるとどうなりますか? msearch は知らないけど、 HyperEstraier は Namazu より軽いと思う。 重い要因は * Perlで書かれている * File::Findによるディレクトリ走査 * File::MMagicによるコンテンツの種別確認 * DB書き込み速度がPerlのhashに依存 このへんかなあ。 msearchもperlだよ。 NAMAZUよりmsearchのが軽いのかな? HyperEstraier はよく知らんけど何で書かれてるの? msearchって、仕組みを知って爆笑してしまったぜ。 namazuって、検索結果を重要度が高い順に並べたりしてくれる ような機能ってあるっけ? >>175 重要度は分からんが、ポイント機能ならあるぞ 最近では、EstraierとNAMAZUどっちが人気? Namazuのようにインデクシングの際に形態素解析を用いている 検索エンジンと、その他、形態素解析を用いない検索エンジンとは インデックス作成の時間以外でどのような違いがあるのでしょうか? >>177 Google Trendsでも使ってしらべれ。 >>179 検索時の精度。すくなくとも再現率(recall)はn-gramのほうが高い。 namazuでPDFファイルを検索し、概要だけであればhtmlで、 全文を見るのであれば、PDFで見るというふうにしたいのですが、 どうすればよいでしょうか?概要のhtmlは作ってあるのですが、ど うすれば検索時にhtmlとPDFを選択できるのかなぁと思いまして。 よろしければ、お知恵をお貸しください。 NMZ.result.* に概要のHTMLのURIを追加すればOK。 概要のHTMLのURIを${uri].htmlにして、その場所に概要のHTMLを格納するのが 楽そうだ。 >181 参考にさせていただきます。ご回答ありがとうございました。 NMZ.* ファイルの仕様 http://www.namazu.org/doc/nmz.html.ja 上記を読んでもよく分からなかったのですが、 結局検索エンジン (namazu.exe)はどういう手順で 検索クエリから目的の文書を探し出すの? NMZ.i には単語情報はないんだよね? 1.まずNMZ.iiで検索文字列から算出したハッシュ値をキーにして NMZ.iのレコード番号を引く 2.NMZ.i の該当レコード番号から文書IDを引っ張ってくる 文書IDと対象ファイルの対応表はどこにあるのかなぁ?(・〜・)ウーム バージョン1.xのときはNMZ.f とNMZ.fi というファイルがあって 各ファイルの情報を記録していた。 2.xからは NMZ.field.{subject,from,date,message-id,...} NMZ.field.{subject,from,date,message-id,...}.i の2つのファイルがその代わりをしている。 行番号=文書IDとなっている。 NMZ.wが単語表で、NMZ.wiがそのインデックス(各単語の先頭のオフセット値が 入っている)。 NMZ.wはコード順にソートされているので、NMZ.wiとNMZ.wをバイナリサーチ すれば該当するNMZ.wiのファイルの位置から単語IDが求まる。 まあ最悪mknmzとlibnamazu.cあたりをみればわかるよ。 Namazu(最新版)をWindows XPで使いたいのですが、カスタマイズを行う 場合は、バイナリではなく、ソースコードからインストールしなければ ならないでしょうか? カスタマイズする内容によるが、普通いらない。 必要になるのはソースコードレベルで埋め込まれている出力を いじるときぐらい。 それもほとんどはgettext化されてるので、ja.poだけいじって差し替えれば 済む話だし。 N-gram戦争中w 全文検索ユーティリティ統一スレッド part3 ttp://pc8.2ch.net/test/read.cgi/bsoft/1120649196/ インディックス作成時に読み込む文字種を正規表現で指定できますか? 記号は除外するとかです mknmz -K 文字列処理: -E, --no-edge-symbol 単語の両端の記号は削除する -G, --no-okurigana 送り仮名を削除する -H, --no-hiragana 平仮名のみの単語は登録しない -K, --no-symbol 記号をすべて削除する あとはソース書き換えかな NamazuをCGI(localhost)で利用しているのですが、検索結果と して表示されたファイルが開けません。よろしければ、お教え 願えないでしょうか? 検索結果のファイルを選択 Forbidden You don't have permission to access /C|/a/b/c/d/f/soturon.html on this server. ------------------------------------------------------ Apache/2.0.55 (Win32) PHP/5.0.5 Server at localhost Port 80 という表示になります。 各種設定はNamazu2.014のインストーラのデフォルトです。 .namazurc の Replace で正しい URI に書き換えれば良いという話なのです がどうにもうまくいかなくて。。。 索対象のファイルのpath C:/a/b/c/d/1/ファイル C:/a/b/c/d/2/ファイル C:/a/b/c/d/3/ファイル という様にファイルを格納しています。 そして、CGIはローカルホストで動かしているのですが、http:// 以下はどのように指定すれば良いのでしょうか? httpd.conf に書いた <Directory> ディレクティブ Alias ディレクティブ ぐらいは示さないとコメントのしようがないよ >>198 >>NamazuをCGI(localhost)で利用(win32) 多分だけど C|このせいだと思う。昔はまった。 <a harf=c|となってると見れないはず ブラウザによるけど lynx では個別にルール指定できてC|/ C:と置換指定。 なんでもlynxが内部で指定置換してくれる。 だからオリジナルは弄ず。w3m あたりも平気 firefox,oprea,IE系は無理だった気が... なんか慣行らしいけど|。GUIのブラウザだと無理?かも?? namazuの方がC|じゃなくてC:/と吐いてくれないと。パスを。昔 考えたのは適当にsed噛ますとかして置換ちゃえばとか思った が...namazu -hで吐かせてるからsedでフィルタすれば...と テキストブラウザで使えるしそのまま...圧縮したまま使えるか ら。普通のブラウザだと圧縮したまま動かないんで... 公開しないし個人で使う分には書換ちゃっていいと思うけど、セ キュリティ上よくないのかね? cgi?どこで吐いてるのかわかんないけど|を/に変えるべく追って 弄らないといけないと思う。winの代表的な各種ブラウザで見た いなら >そして、CGIはローカルホストで動かしているのですが、http:// 設定を晒してくれ 「Replace http://localhost/C |/ file:」 にしとけ >198です。 インデックス作成のオプション指定に気をつけ、きちんとドキュメントルート を確認の上、.namazurcのReplaceを設定したら無事にできました。 ありがとうございました。 UNIX板ですが、話題がNamazuなので。。。 以下について、どなたかご教示願えませんか? Windows XPでNamazuを利用しているのですが、これからPHP(5.0) でNamazuを使うために、Namazuモジュール(php-namazu-2.3.1) をインストールしたいと考えています。 調べた限りでは、現在はPECLもCVSも利用できない(Namazuモジュール) ということでした。Windowsでこのモジュールをインストールするにはど のような手順を踏めばよいのでしょうか? それと、塚田卓也さんという方がNamazu関数をWindows版PHPで も使えるように開発された、モジュール「php4_namazu-3.0.0PHP4.3.x 」があるそうですが、これは5.0でも使えたりするのでしょうか? >204 マルチよくない ttp://www.namazu.org/pipermail/namazu-win32-users-ja/2006-October/001443.html 使えたりするかどうかは自分で試してみたの? いや、[PHP4---]というモジュール名から見るに、多分使えないだろう なぁと思って、試してはいません。ただ、使えるか知っている方がいた ら、その是非を教えて欲しいなぁと思いまして。 もう1つの、WindowsへのNamazuモジュールのインストールのほうは自分 でもそれなりに調べたりしましたが、どうも分からなかったもので。。。 namazurcってmknmzしたときには適用されないんですか? replace使いたいんですが… --replace というオプションがある ttp://www.namazu.org/doc/tutorial.html#run-mknmz namazuの検索結果をEUC-JPで出力させているのですが、Shift_JISで書かれた ファイルの内容がそのままShift_JISで出力されてしまうため、検索結果が文 字化けしてしまいます。何か設定が必要なんでしょうか。 tp://www.ki.nu/software/namazu/tutorial/make.html#PERL_MODULEで namazu 1.9.12 以降では Chasen2 にだけ対応している。 とありますが、kakasiは使用できないということでしょうか? 検索結果にキーワードが最初にファイルの何行目に登場するか、の情報って取得できますか? google検索エンジンみたいに、キーワードのヒットした前後の文章を結果一覧に出したいのですが・・・ >>216 そんな古い情報参照しないでよ... http://www.namazu.org/doc/tutorial.html#prep-make >>217 namazu.cgi単独では無理。コマンドラインならnmzgrepというのがあるけど、 あれは単に検索結果に基づいてあとでgrepしているだけ。 libnmz使って同等のことをやるか、Hyper Estraierでも使ってみるのが吉。 read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる