tstampフィールドの値を"yyyy/MM/dd HH:mm:ss"形式で表示するには

tstampフィールドの値は、Lukeなどを使ってみると、"20090908080249515"のような17桁の数字になっている。

この17桁の数値は、Hitオブジェクトのgetメソッドを使って取得することができるので、これを整形できればよい。
ということで、17桁の数値のもとをたどると。。


BasicIndexingFilerクラスの100行目

doc.add(new Field("tstamp",
DateTools.timeToString(datum.getFetchTime(), DateTools.Resolution.MILLISECOND),
Field.Store.YES, Field.Index.NO));

getFetchTimeメソッドを追ってみると、

public long getFetchTime() { return fetchTime; }

fetchTimeを追ってみると、

private long fetchTime = System.currentTimeMillis();

tstampフィールドの値は、System.currentTimeMilliis()の値だということがわかる。


さて、tstampフィールドの値をHitオブジェクトのgetメソッドを通じて取得すると、String型に変換後の値が出力されるので、プログラムでtstampフィールドの値をフォーマットするには、もう少し工夫する必要があった。
つまり、String型からDate型に戻してあげる作業が。。うーん。。ほふく前進だ。

Date tstamp = DateTools.stringToDate(hit.get("tstamp"));