1.4.2 solr字段类型html
solr的TrieDateField(DateField已经弃用)字段类型,表示精确到毫秒的时间点.在XML Schema 规范中所使用的格式是一个严格的日期事件的规范表示格式.字符串
YYYY-MM-DDThh:mm:ssZ:get
YYYY:年
MM:月
DD:日
hh:24进制小时
mm:分钟
ss:秒
Z:表示UTC时间
注意:没有时区能够指定,这个日期字符串通常表示UTC时间.这里有一个例子:
1972-05-20T17:33:18Z
你能够选择加入部分小数,不容许在末尾加0,任何精确度超出毫秒的均被忽略掉:
1972-05-20T17:33:18.772Z
1972-05-20T17:33:18.77Z
1972-05-20T17:33:18.7Z
solr的日期字段类型一样支持日期的数学运算表达式,这使它很容易的及时建立时间相对于固定的时刻而言,当前时间能够用"NOW"来表示:
日期表达式能够添加一些指定单位的时间数字,也能够对当前时间经过指定的单位来四舍五入.表达式能够链式的,从左到右执行.斜杠"/"表示四舍五入.
例子:
表示两个月以后的当前时间点:NOW+2MONTHS
表示一天之前的时间点:NOW-1DAY
表示当前小时开始:NOW/HOUR
下面计算(精确到毫秒)将来6个月又3天的时间点,而后四舍五入时间到天(day):
NOW+6MONTHS+3DAYS/DAY
混合方式:1972-05-20T17:33:18.772Z+6MONTHS+3DAYS/DAY
NOW
example:
q=solr&fq=start_date:[* TO NOW]&NOW=1384387200000
TZ
默认的,全部日期的数学表达式都是相对于UTC时区来评估的.TZ属性能够指定时区.来覆盖默认的UTC时区.
例如,这个请求对当前月的每一天使用分面范围查询,时区为UTC.
http://localhost:8983/solr/select?q=*:*&facet.range=my_date_field&facet=true
&facet.range.start=NOW/MONTH&facet.range.end=NOW/MONTH%2B1MONTH&facet.range.gap=%2B1DAY
结果:
<int name="2013-11-01T00:00:00Z">0</int> <int name="2013-11-02T00:00:00Z">0</int> <int name="2013-11-03T00:00:00Z">0</int> <int name="2013-11-04T00:00:00Z">0</int> <int name="2013-11-05T00:00:00Z">0</int> <int name="2013-11-06T00:00:00Z">0</int> <int name="2013-11-07T00:00:00Z">0</int>
指定时区:
http://localhost:8983/solr/select?q=*:*&facet.range=my_date_field&facet=true &facet.range.start=NOW/MONTH&facet.range.end=NOW/MONTH%2B1MONTH&facet.range.gap=%2B1DAY &TZ=America/Los_Angeles
结果:
<int name="2013-11-01T07:00:00Z">0</int> <int name="2013-11-02T07:00:00Z">0</int> <int name="2013-11-03T07:00:00Z">0</int> <int name="2013-11-04T08:00:00Z">0</int> <int name="2013-11-05T08:00:00Z">0</int> <int name="2013-11-06T08:00:00Z">0</int> <int name="2013-11-07T08:00:00Z">0</int>