[Namazu-users-ja 19] Re: pnamazuを使用したgrep検索をpdfやoffice文書に対して行いたい

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2004年 7月 14日 (水) 13:39:28 JST


寺西です。

# 制限付きでかつ非常に手間のかかるのでよければ、次の方法が使えます。

Dai NAKAMURA wrote:
> 
> 検索語の存在する行を検索結果のサマリー表示したく思っております。
> 本家namazuでは、検索結果のサマリーは文頭の決まった文字数しか表示
> しないようですので、インデックス作成は本家NAMAZUで、検索は
> pnamazuのgrep機能を使用するようにしたく思っております。
... 
> その際、対象とする文書は、PDF及びMS-OFFICE文書を対象です。

きちんとテストしたわけではありませんが、PDF, Word, Excel なら
とりあえず使えそうでした。

> 問題は、mknmzでインデックスを作成した原文書が、PDFやOffice文書
> で文書フィルタを介してインデックス作成したため、pnamazuから原文書
> を読み出すことができずGrep機能させることができない状態です。

あくまでも grep ですから、plain テキストじゃないと利用できない機能
ですね。
 
> 検索結果は、.namazurcのreplaceで
> file:////foo.pdf
> のようにURI標記して原文書はMicrosoftNetworkで引用可能なようにして
> おりますが、PDFやOfficeの文書フィルタを介したテキスト全文を
> NAMAZUサーバーにプールしてpnamazuのGrep機能を使用するような事
> が可能でしょうか?

標準的な機能としては実現できないかと思いますが、力技でやる方法が
あります。

要はテキストファイルなら grep できるわけです。ならば、テキスト
ファイルを用意してやればいいのです。

1. テキスト変換

元データの入っているパスを
/org/
とするならば、テキストに変換したファイルを入れるパスを
/txt/
としましょう。

/org/ の中にある .pdf, .doc, .xls をテキストに変換したものを
/txt/ に同じディレクトリ構成で保存します。このとき、オリジナル
と同じ名前で保存しておくと、後々便利です。

テキストの変換は、PDF なら
$ pdftotext /org/pdf.pdf > /txt/pdf.pdf

Word なら
$ wvWare --charaset=euc-jp --config=wvText.xml /org/word.doc >
/txt/word.doc

Excel なら
$ xlhtml -m -nc /org/excel.xls | nkf -emZ1 > temp.html
$ w3m temp.html > /txt/excel.xls

で、(質はともかく)変換できます。もちろん Office でテキスト形式で
保存するといったことを行っても良いです。


2. インデックス作成

/org/ と /txt/ の両方でインデックスを作成します。

そして、/org/ の方の NMZ.field.uri を開き、
/org/*.pdf, /org/*.doc, /org/*.xls をそれぞれ
/txt/*.pdf, /txt/*.doc, /txt/*.xls に書き換えます。

次にNMZ.field.uri.i を再構築するために /org/ のインデックスの
ある場所で、次のコマンドを実行します。
$ rfnmz .


3. .namazurc の修正

Replace でオリジナルのファイルに差し替えます。

Replace /txt/ /org/

ただし、/org/ を file://// に差し替えているということなので実際には

Replace /org/ file:////
Replace /txt/ file:////

のような形になるかと思います。(ここはノーチェックなので、ミスしている
可能性が高いです。ミスを見つけた場合は、読み替えてください。)


4. 検索

/org/ のインデックスを使って、検索します。すると、検索結果に grep
の結果が含まれます。また、リンクにアクセスすると、オリジナル
ファイルにアクセスできることでしょう。


5. 制限、その他

・grep 結果の行番号はテキストに変換した際の行番号なので、それ自体に
  意味はありません。
・一連の変換作業を行うスクリプトは、適当に作ってください。
・オリジナルファイルの更新頻度が多いと、インデックスの再構築が面倒
  です。
・テキスト変換に使用しているツールによっては、質の悪いテキストを
  出力します。(例えば、xlhtml はフッターが入っています。)
  適当なフィルタを通す必要があるかもしれません。
・w3m はデフォルト 10000行までしか変換できないので、注意してください。
・当たり前ですが、無保証です。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-users-ja メーリングリストの案内