質問: pdf の検索に namazu などを使うメリット 再質問することにします。 linux(debian wheezy) で あるディレクトリにある pdf ファイル群の中身のテキストを検索したいのですが、 find /directory_path |xargs grep -i keyword とやって検索する場合に比べて namazu groonga を使うメリットってどのくらいあるでしょうか? (他にもやり方はあるのでしょうか?) namazu を文字化けせず使うためには $ sudo update-locale lang=ja_jp.euc-jp language="ja_jp:ja" を実行しておいて ロケールを euc-jp に変更しなければいけないので この辺りが原因で後で何か面倒なことが発生しないかも少し気になります。 どのやり方でもまず pdf を txt化しておかねばなりません。 ファイル名からやっかいな空白を削除するためには どこかのサイトに書いてあったことを使い、 pdftotext の処理には以前の質問で教えていただいたことを応用 (応用というかほとんどそのままですが)して $ find . -name "* *" | rename 's/ /_/g' $ find ./ -name '*.pdf' -print | while read line;do ${line} ${line%.pdf}.txt;done とやればいいと思います。
回答: ・grep対象のテキストファイルの文字コードが統一されていて(異なるのはnkf等で事前に統一) ・grepで指定する文字列の文字コードもそれと同じで ・ファイル数やファイルサイズも少なくて ・pdfが更新されるたびにテキスト化する手間が惜しくなく(ないしは、アップロード時に変換を自動化しておくか) ・検索結果の一覧やそのリンクのhtml化するのも自力で行う(ないしは、html化は不要) ってことならgrepでも いいんじゃないですかね。 逆にいうと、同一ファイルに対して何度も検索をしていて、 その対象となるデータ量が多いとか、今後増える予定ってことなら、 grep検索では実用的な応答速度にならないかもしれませんので、 その場合は、全文検索エンジンを使うべきかと。 なお、mknmzで pdfファイルが unable to convert pdf file (maybe copying protection) のエラーになる件は、 実際にpdfにパスワードロックがかかっているのでなく デフォルトロケールをeuc-jpにすると解決するということなら、 xpfdの設定ファイル(xpdfrc)のunicodemapで指定しているファイルがないってことかも。 (パス間違いとかで・・)