今関わっているプロジェクトではLuceneを使っているのですが、
Luceneのバージョンがだいぶ古いこともあって、いろいろDeprecatedなWaringが出てました。
掲題のNumberToolsもそれ。
代わりにNumericUtilsを使えとのこと。
試しにインデックス生成の部分だけ NumberTools#longToString から NumericUtils#longToPrefixCoded にしてみたら
検索結果が返らなくなってアレレー?って思って試してみたら、出力文字列も変わってました。
public class Test1 {
@Test
public void test(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
Date now = new Date(), future = cal.getTime();
System.out.println(now.getTime() + " < " + future.getTime() + " = " + now.compareTo(future));
Assert.assertTrue(now.compareTo(future) < 0);
String s = NumberTools.longToString(now.getTime());
String t = NumberTools.longToString(future.getTime());
System.out.println(Base64.encode(s.getBytes()) + " < " + Base64.encode(t.getBytes()) + " = " + s.compareTo(t));
Assert.assertTrue(s.compareTo(t) < 0);
s = NumericUtils.longToPrefixCoded(now.getTime());
t = NumericUtils.longToPrefixCoded(future.getTime());
System.out.println(Base64.encode(s.getBytes()) + " < " + Base64.encode(t.getBytes()) + " = " + s.compareTo(t));
Assert.assertTrue(s.compareTo(t) < 0);
s = NumberTools.longToString(1);
t = NumberTools.longToString(100000000L);
System.out.println(Base64.encode(s.getBytes()) + " < " + Base64.encode(t.getBytes()) + " = " + s.compareTo(t));
Assert.assertTrue(s.compareTo(t) < 0);
s = NumericUtils.longToPrefixCoded(1);
t = NumericUtils.longToPrefixCoded(100000000L);
System.out.println(Base64.encode(s.getBytes()) + " < " + Base64.encode(t.getBytes()) + " = " + s.compareTo(t));
Assert.assertTrue(s.compareTo(t) < 0);
s = NumberTools.longToString(2L);
t = NumberTools.longToString(11L);
System.out.println(Base64.encode(s.getBytes()) + " < " + Base64.encode(t.getBytes()) + " = " + s.compareTo(t));
Assert.assertTrue(s.compareTo(t) < 0);
s = NumericUtils.longToPrefixCoded(2L);
t = NumericUtils.longToPrefixCoded(11L);
System.out.println(Base64.encode(s.getBytes()) + " < " + Base64.encode(t.getBytes()) + " = " + s.compareTo(t));
Assert.assertTrue(s.compareTo(t) < 0);
}
}
結果:
1381318591951 < 1383996991951 = -1
MDAwMDAwaG1raGZhdmo= < MDAwMDAwaG5zczJwamo= = -1
IAEAAAAoGWgEC08= < IAEAAAAoI2UYU08= = -10
MDAwMDAwMDAwMDAwMDE= < MDAwMDAwMDAxbmpjaHM= = -1
IAEAAAAAAAAAAAE= < IAEAAAAAAC9XQgA= = -47
MDAwMDAwMDAwMDAwMDI= < MDAwMDAwMDAwMDAwMGI= = -48
IAEAAAAAAAAAAAI= < IAEAAAAAAAAAAAs= = -9
NumericUtilsは得られる文字列がバイナリ(?)っぽかったので全体的にBase64エンコードしてます。
とりあえず大小の比較は正しいっぽいので、
インデックス生成と検索キー両方ともNumrecUtilsに変更すれば期待する動作になりますね。