タイトルの件、うまくいかなかったことがあったので、色々と調べて対処してみた。
ちなみに対象のHyper Estraierのバージョンは1.4.13。
まず、Hyper Estraierでは、クローリング時にフィルタ用のプログラム(PDFをHTMLに変換して解釈、など)をはさむことで、検索対象としてPDF(.odf)やワード(.doc)、エクセル(.xls)、パワーポイント(.ppt)などのファイルを扱うことが可能です。
Round 1
"estwaver crawl"コマンドで、ドキュメントが配置してあるところをクロールさせた場合に、通常のHTMLファイルは何の問題もなく処理できたんだけど、PDFやWordのファイルに対しては、fetchはするんだけど、ignoreされちゃう問題が起こった。
INFOログ的には以下のような感じ。
2009-06-26T06:52:18Z INFO [12]: fetching: 4: http://localhost:3000/cache/share_file/user/1/xxxxxxx%E5%A5%91%E7%B4%84%E7%B4%84%E6%AC%BE(%E7%AC%AC3%E7%89%88%EF%BC%89.doc 2009-06-26T06:52:18Z INFO [13]: fetching: 4: http://localhost:3000/cache/share_file/user/1/SKIPaaS%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%AC%E3%82%A4%E3%83%89.pdf 2009-06-26T06:52:18Z INFO [12]: ignored: 200: http://localhost:3000/cache/share_file/user/1/xxxxxxx%E5%A5%91%E7%B4%84%E7%B4%84%E6%AC%BE(%E7%AC%AC3%E7%89%88%EF%BC%89.doc 2009-06-26T06:52:18Z INFO [13]: ignored: 200: http://localhost:3000/cache/share_file/user/1/SKIPaaS%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%AC%E3%82%A4%E3%83%89.pdf
この点については、waver(クローラ)の_confファイルの設定の記述ミスだった。
typerule: ^application/pdf$H@/usr/local/share/hyperestraier/filter/estfxpdftohtml typerule: ^(application/msword|application/vnd.ms-(excel|powerpoint))$H@/usr/local/share/hyperestraier/filter/estfxmsotohtml
上記は、フィルタの設定だが、上記の記述はNGで、正しくは以下のように書く。
typerule: ^application/pdf${{!}}H@/usr/local/share/hyperestraier/filter/estfxpdftohtml typerule: ^(application/msword|application/vnd.ms-(excel|powerpoint))${{!}}H@/usr/local/share/hyperestraier/filter/estfxmsotohtml
mimetypeの後ろに、"{{!}}"がなかった、というオチ。
Round 2
PDFファイルはfetchされてregisterされるけど、ワードのファイルは、fetchされるけど"not to be indexed"となっちゃう問題が起こった。
INFO(DEBUG)ログ的には、以下のような感じ。
2009-06-26T07:04:16Z INFO [12]: fetching: 4: http://localhost:3000/cache/share_file/user/1/xxxxxxx%E5%A5%91%E7%B4%84%E7%B4%84%E6%AC%BE(%E7%AC%AC3%E7%89%88%EF%BC%89.doc 2009-06-26T07:04:16Z INFO [13]: fetching: 4: http://localhost:3000/cache/share_file/user/1/SKIPaaS%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%AC%E3%82%A4%E3%83%89.pdf 2009-06-26T07:04:16Z DEBUG [12]: not to be indexed: http://localhost:3000/cache/share_file/user/1/xxxxxxx%E5%A5%91%E7%B4%84%E7%B4%84%E6%AC%BE(%E7%AC%AC3%E7%89%88%EF%BC%89.doc 2009-06-26T07:04:16Z DEBUG [13]: registered: http://localhost:3000/cache/share_file/user/1/SKIPaaS%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%AC%E3%82%A4%E3%83%89.pdf
この点については、ワードファイルのフィルタソフトが正しく動いていなかったのが原因。
waver(クローラ)の_confファイルで、MS Office関連のフィルタの設定をしているのは、上でも書いたとおりですが、フィルタのコマンドである"estfxmsotohtml"は単独でも実行できるのですが、実際にクローリングさせてい"not to be indexed"となったドキュメントをinputとして渡すと、HTMLに展開されるはずのアウトプットが空ファイルになってしまった。
おかしいと思い、"estfxmsotohtml"の中身で実行されているものをさらに抽出して実行すると、以下のような結果になった。
$ wvWare --charset=UTF-8 --nographics "/data/app/skip/share_files/user/1/xxxxxxx契約約款(第3版).doc" wvWare: error while loading shared libraries: libwv-1.2.so.3: cannot open shared object file: No such file or directory
おっと、、、ライブラリが参照できていないじゃないすか・・・握りつぶし状態。
インストールされているはずなのに・・・あ!ということで、、、
- ライブラリのある場所を探す(findとかlocateとか)
- "/etc/ld.so.conf"に記載+"ldconfig"コマンドを実行して、ライブラリにパスを通す(LD_LIBRARY_PATHを設定しても良い)
これで、再度実行することで、めでたくクロールされインデックスに登録された。