Apache Lucene 2.2のorg.apache.lucene.search.Sortについて。
SortのコンストラクタでfieldNameを指定してnewすると、フィールドの値から型を推定して(SortField.AUTO)ソートする。このときどうやら、フィールドの値が数字だけで構成されていると、型をintと推定するらしい。そして桁数が多すぎてintに入りきらない場合は、ソートが働かなくなる。なんのエラーも出さずに、だ。
java.util.Dateをフィールドに格納する場合は、org.apache.lucene.document.DateToolsで文字列に変換して入れろとされている。このDateToolsは"200707191045"という具合に変換する。200707191045はintの最大値よりも大きいので、まさに上のケースに該当する。
というわけで今日は地獄めぐりをさせられた。