やっとこ検索

全文検索として、Fess を作っているけど、やっとこ指定時刻にクロールしてインデックスできる感じになってきた。まぁ、まだ、Solr の細かいところまで分かってない気もするけど、schema.xml を nutch のを参考にして、作り直してみたりした。今のところは、S2Robot で Web 巡回しかできていないので、ファイルシステムの巡回も何とかしたいな(ファイルシステムの巡回もS2Robotにもたせるのはありかも)。そんでもって、より nutch と差別化していくためにもモバイルにも対応させようかと考え中(ここはMobyletの出番か!?)。S2Chronos も使っているけど、ちらちらコードを見ていると気になるところがあるのだよな…(*_ja.properties だけで、デフォルトのやつはいらんのかとか、ソース上でc:\tmpみたいのも見に行くとこもあったような)。あとは、ぼちぼち S2Robot に robots.txt やサイトマップを読む機能をつけないとな(行儀をよくしないと)。Javaのrobots.txtとか読みにいくようなライブラリもちらっと探してみたけど、標準的なものがないっぽいから自前で作る必要があるな。そんな感じで、まだ、いろいろとあるけど地道に進行中。

Random

java.util.RandomでRandom()としたときのシードって、固定かと思っていたら違うのね。Java 1.4 まではSystem.currentTimeMillis() をしていたけど、Java 5 以降では seedUniquifier の値とSystem.nanoTime()の和でよりかぶらない値にしたのね。確認した感じだと、1.1 あたりから現在時間をシードにしてたみたいだな(1.0.2 とかのJavaDocが見つからないからそれは不明)。てっきり固定かと思ってた…。

マルチスレッドの調整

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