Solrで日付の加算/減算をする

f:id:saihoooooooo:20140130163127p:plain

Solrを使っていて条件に半年先ってどう書くんだっけなー、と思い調べてみました。

http://docs.lucidworks.com/display/lweug/Solr+Date+Format

日付の加算/減算は、以下のように[日付][+/-][単位]とすればよいそうです。

opened_at:[* TO NOW+6MONTH]

NOWは現在時刻を表す書式で、この部分は日付でも構いません。

opened_at:[* TO 2014-01-30T12:34:56Z+6MONTH]

などと書くこともできます。

ついでにわかったことですが、[日付]/[単位]とすればその単位で丸めた値が取得できるようです。

opened_at:{* TO NOW+6MONTH/DAY}

で今日の6ヶ月後の午前0時未満の日付を持つドキュメントが抽出できます。

加算/減算/丸めに使える単位は以下の通りです。
単数形と複数形には特に挙動の違いはありません。

単位 書式
YEAR / YEARS
MONTH / MONTHS
DAY / DAYS / DATE
HOUR / HOURS
MINUTE / MINUTES
SECOND / SECONDS
ミリ秒 MILLISECOND / MILLISECONDS / MILLI / MILLIS

ミリ秒とか使い道が思い浮かばない。