Extractor機能

ひとまず、word, excel, powerpoint, visio, publisher, pdf からテキストを取得する機能を追加してみた。ms office 系は POI に投げている感じだけど。これはこれで、読めるものを増やしていきたいところ。そんな感じで、MIMEタイプの判定のところもそうだけど、Extractor のところもクロール機能とは関係なく、それだけで利用できるようにdiconを分けてみたりしておいた。

ファイルシステム対応

全文検索のFessでローカルにあるようなファイルもインデックス化するために S2Robot にファイルシステムも巡回できるように機能追加してみた。file:// で始まるパスを渡せば、そこからファイルシステムを辿っていく感じ。次は Word や Excel の中身の文字列を取得する機能を加えようかね。

マルチスレッドの調整

S2Robotクラスの中にS2RobotThreadのインナークラスがあって、それがスレッドという感じで動いていたのだけど、こういう構成だとトランザクション周りがどうもおかしいので、そこら辺を見直して、インナークラスをやめることにしてみた。簡単に直せるだろうと思ったら、結構キツカッタ…。マルチスレッドの共有キューみたいなのは結構ややこしいな(こっちを止めたら、あっちを動かしてみたいな…)。そんな感じで、そこいらを自分で作らず、何かのライブラリを使った方が楽だったかも。

保存データをバイナリに変更

今までクロール結果をStringで保持していたのだけど、バイナリデータを扱うのがいろいろと不便なので、保存をバイト配列に変更(将来的にはInputStreamにしたいところ)。今まで通り文字列で得たい場合は、getDataAsString() メソッドで得られるようにしてみました。という感じで、リファクタリングしました。こっちの方が自然な感じだな。