按日期SOLR如何筛选查询?(How to filter query in solr by date

2019-08-01 16:28发布

在我SOLR有日期字段(published_date)和值在此格式“2012-09-26T10:08:09.123Z”

如何我可以简单的输入,如“2012年9月10日”,而不是完整的ISO日期格式进行搜索。

是否有可能在SOLR?我试图与

fq=[2012-09-24%20TO%20NOW]

应该过滤比公布日期2012年9月24日比现在更大的成绩,少回报。

但它与已发表的日期返回的数据与2012年9月23日,像下面

<float name="score">2.8183863</float>
<str name="name">Local Team Inspires Obama</str>
<date name="published_date">2012-09-23T07:44:53.123Z</date>

我缺少的东西吗?

提前致谢。

Answer 1:

如果你想获得上周发布,你可以做类似服用点:

&fq=published_date:[NOW-7DAY/DAY TO NOW]

但是,如果你想有一个具体的日期,你必须这样做在SOLR日期格式:

&fq=published_date:[2013-07-17T00:00:00Z TO NOW]

我希望帮助



Answer 2:

Solr的日期的最简单的形式是,其指的是当前日期和时间关键字“NOW”。 这是Solr中区分大小写,但清醒的查询分析器将允许它在任何情况下。 “现在”可以使用,也可以,如果没有明确的日期或日期数学指定,或者如果没有明确的日期指定日期的功能可以使用。

MM:ss.mmmZ,其中“YYYY”是四位数字的年份,第一个“毫米一个明确的日期是基于ISO 8601的格式,它由形式YYYY-MM-DDTHH的字符串写入的Solr “是两位数的月份,‘DD’是两位数字的天,‘T’是强制性文字字母‘T’,以指示时间如下,‘HH’是两位数小时(” 00' 到' 23“),所述第二‘毫米’是两位数分钟(” 00' 到‘59’),‘SS’是两位数秒(‘00’到‘59’),任选“.mmm”被三位数毫秒之前有一个周期,并且“Z”为强制文字字母“Z”以指示该时间为UTC(“祖鲁”)。 的毫秒部分,包括其超前时段,是可选的。 尾随零不需要毫秒。

For example:

    2008-01-01T00:00:00Z

    2008-01-01T00:00:00

    2008-01-01T00:00 same as [2008-01-01T00:00:00Z TO 2008-01-01T00:00:59Z]

    2008-01-01T00: same as [2008-01-01T00:00:00Z TO 2008-01-01T00:59:59Z]

    2008-01-01T same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z]

    2008-01-01 same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z]

    2008-01 same as [2008-01-01T00:00:00Z TO 2008-01-31T23:59:59Z]

    2008 same as [2008-01-01T00:00:00Z TO 2008-12-31T23:59:59Z]

感谢Solr的文档



文章来源: How to filter query in solr by date?
标签: solr