在我的SOLR中有日期字段(published_date),值的格式为“2012-09-26T10:08:09.123Z”
如何通过“2012-09-10”等简单输入进行搜索,而不是完整的ISO日期格式。
SOLR有可能吗?我试过
fq=[2012-09-24%20TO%20NOW]
它应该通过过滤大于公布日期2012-09-24并且小于现在的结果返回。
但它会返回发布日期为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>
我错过了什么吗?
提前感谢。
答案 0 :(得分:39)
如果您想获得上周的出版物,可以执行以下操作:
&fq=published_date:[NOW-7DAY/DAY TO NOW]
但是如果你想要一个具体的日期,你必须以SOLR日期格式:
&fq=published_date:[2013-07-17T00:00:00Z TO NOW]
我希望有帮助
答案 1 :(得分:11)
最简单的Solr日期形式是关键字&#39; NOW&#39;它指的是当前的日期和时间。它在Solr中区分大小写,但Lucid查询解析器将允许它在任何情况下。 &#39; NOW&#39;如果没有指定明确的日期或日期数学,则可以使用,或者如果指定日期数学而没有明确的日期,则可以使用它。
使用基于ISO 8601的格式在Solr中写入显式日期,该格式由yyyy-mm-ddThh:mm:ss.mmmZ形式的字符串组成,其中&#39; yyyy&#39;是四位数的年份,第一个是&#39; mm&#39;是两位数的月份,&#39; dd&#39;是两位数的日子,&#39; T&#39;是强制性字面字母&#39; T&#39;表明时间紧随其后,&#39; hh&#39;是两位数的小时(&#39; 00&#39;到#23;&#39;),第二个&#39; mm&#39;是两位数的分钟(&#39; 00&#39;到&#39; 59&#39;),&#39; ss&#39;是两位数秒(&#39; 00&#39;到&#39; 59&#39;),可选&#39; .mmm&#39;是一个以句号开头的三位数毫秒,而且是&#39; Z&#39;是强制性字面字母&#39; Z&#39;表示时间是UTC(&#39; Zulu&#39;)。毫秒部分,包括其领先期,是可选的。毫秒不需要尾随零。
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 Documentation
答案 2 :(得分:0)
如果您要搜索简单的dd-MM-yyyy, 您的日期-“ 2012-09-26T10:08:09.123Z”
在Solr中 - -共同 - - - q 日期:[26-09-2019至02-10-2019] 它给出了上述范围内的所有数据。