如何按日期筛选solr中的查询?

24 solr

在我的SOLR中有日期字段(published_date),值的格式为"2012-09-26T10:08:09.123Z"

我如何通过简单的输入搜索,如"2012-09-10"而不是完整的ISO日期格式.

SOLR有可能吗?我试过了

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

它应该通过过滤结果大于发布日期2012-09-24并且小于NOW返回.

但它返回的数据与2012-09-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>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

提前致谢.

Khr*_*riz 43

如果你想获得上周的出版物,你可以做一些像:

&fq=published_date:[NOW-7DAY/DAY TO NOW]
Run Code Online (Sandbox Code Playgroud)

但是如果你想要一个具体的日期,你必须以SOLR日期格式进行:

&fq=published_date:[2013-07-17T00:00:00Z TO NOW]
Run Code Online (Sandbox Code Playgroud)

我希望有所帮助


Ahm*_*lem 14

最简单的Solr日期形式是关键字'NOW',它指的是当前的日期和时间.它在Solr中区分大小写,但Lucid查询解析器将允许它在任何情况下.如果没有指定明确的日期或日期数学,则可以使用'NOW',或者如果指定日期数学而没有明确的日期,则可以使用它.

使用基于ISO 8601的格式在Solr中写入明确的日期,该格式由yyyy-mm-ddThh:mm:ss.mmmZ形式的字符串组成,其中'yyyy'是四位数年份,第一个'mm '是两位数的月份,'dd'是两位数的日子,'T'是强制字面字母'T'表示时间跟随,'hh'是两位数小时('00'到'' 23'),第二个'mm'是两位数分钟('00'到'59'),'ss'是两位数秒('00'到'59'),可选'.mmm'是一个句点前面的三位数毫秒,'Z'是表示时间是UTC('祖鲁')的强制文字字母'Z'.毫秒部分,包括其领先期,是可选的.毫秒不需要尾随零.

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]
Run Code Online (Sandbox Code Playgroud)

感谢Solr 文档

  • 我做了`nk_date:2016-01`,它说“无效的日期字符串:'2016-01'” (2认同)