在multiValued字段中搜索日期范围内的日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在multiValued字段中搜索日期范围内的日期相关的知识,希望对你有一定的参考价值。

我在查找日期属于我在查询中指定的范围内的文档时遇到了麻烦。

架构配置如下

<field name="dates" type="rdates" stored="true" />
<fieldType name="rdates" class="solr.DateRangeField" multiValued="true" />

这些是我在Solr索引的文件

查询:q=dates:*

{
"responseHeader":{
    "params":{
    "q":"dates:*",
    "_":"1518809837624"}},
"response":{"numFound":2,"start":0,"docs":[
    {
        "id":1,
        "dates":["[2015-12-31 TO 2016-01-01]"],
        "_version_":1592586045307748352},
    {
        "id":2,
        "dates":["[2015 TO 2017]",
        "[2013 TO 2015]"],
        "_version_":1592595675256717312}]
}}

这些是与用户查询匹配的文档:

查询:fq={!field f=dates op=Within}[2012 TO 2016]&q=dates:*

{
"responseHeader":{
    "params":{
    "q":"*:*",
    "fq":"{!field f=dates op=Within}[2012 TO 2016]",
    "_":"1518808413748"}},
"response":{"numFound":1,"start":0,"docs":[
    {
        "id":1,
        "dates":["[2015-12-31 TO 2016-01-01]"],
        "_version_":1592586045307748352}]
}}

据我所知,ID为2的文档应该匹配,因为日期字段中的一个值与我的查询匹配。

实际上,将文档ID = 2更改为在日期字段中仅具有值[2013 TO 2015],它与我的查询匹配。

查询:fq={!field f=dates op=Within}[2012 TO 2016]&q=dates:*

{
"responseHeader":{
    "params":{
    "q":"dates:*",
    "fq":"{!field f=dates op=Within}[2012 TO 2016]",
    "_":"1518808413748"}},
"response":{"numFound":2,"start":0,"docs":[
    {
        "id":1,
        "dates":["[2015-12-31 TO 2016-01-01]"],
        "_version_":1592586045307748352},
    {
        "id":2,
        "dates":["[2013 TO 2015]"],
        "_version_":1592597631061721088}]
}}

我应该如何查询属于查询指定范围的文档?

答案

相同的代码和配置,不同的日子,它工作

我想我的电脑不喜欢星期五下午工作。

以上是关于在multiValued字段中搜索日期范围内的日期的主要内容,如果未能解决你的问题,请参考以下文章

Solr部分更新MultiValued的Date日期字段时报错及解决方案

选择日期范围内的特定日期

在日期字段上进行时间范围搜索的休眠条件

日期时间日历:在单个输入字段中选择日期范围

mysql选择范围内的日期时间对象

搜索日期并复制并粘贴整行:VBA