某案件で、サイトの全文検索機能の構築をすることになった。
Webでのクローラーと全文検索が作成範囲。
言語はなんでもいいよということなので、前々から気になってたluceneを使ってみることにした。
luceneの解説サイトってほとんどないのだけど、zip内のdemoとAPIリファレンスとこちらのサイト(
http://lucene.jugem.jp/)で何とかなる。
とりあえずインデックス生成と検索ロジックはさくっとできた。
僕の公開してるサイトをクロールしてみたんだけどなかなかいい感じ。
うちのサイトはPowerd by GOOGLEで検索してるので、独自実装ロジックいれてもいいなぁ。
ちょと感想を何点か。
・lucene-demoに付属のHTMLパーサが使えない。。というかうまく動かない。
ネットを徘徊してたらjerichoというライブラリを見つけた。
これhtmlが多少壊れててもいけるらしい。かなりいい。
ただ、さすがにAタグ閉じてないのはNGのようで。(僕のサイトAタグ閉じてないのが何個かあった。恥ずかしい。。。)
・lucene2.*対応の日本語ライブラリlucene-jaがzipファイルにtestって文字が入ってるのがとても気になる。ドラフト版だし。
でもまぁ特に問題なく使えるようなのでそのまま使うことにした。
・senのインストールってめんどくさいね。
・JapaneseAnalyzer使ってdebugでログ吐いてインデックス生成したら1時間半かかった。ログが1.5GBになった。
で、infoでログ吐いてインデックス生成したら50秒で終わった。ログは2KB。ディスク書き込みコストってやっぱりかなり大きいんだなと再認識。
あとは、実際にユーザのデータでどのくらいの精度が出るかなんだよなぁ。
独自用語とかたくさんありそうだからbi-gramで行きたいところだけど。
bi-gramと形態素解析ってどっちがいいんだろうか。一長一短ってことだけど、いろいろ遊んでみたいな。