匹配多值日期范围字段的单个值

时间:2018-04-27 16:27:25

标签: solr solr6

假设我在架构中定义了一个字段,然后将其编入索引为' dmvf_rab_date_range'

<fieldType name="date_range" class="solr.DateRangeField" multiValued="true" indexed="true"/>
<dynamicField name="dmvf_*" type="date_range" indexed="true" stored="true" multiValued="true" />

然后索引一组值,使其返回如下:

["[2018-04-07 TO 2018-04-07]",
 "[2018-04-14 TO 2018-04-27]",
 "[2018-05-05 TO 2018-05-05]",
 "[2018-11-03 TO 2018-11-16]",
 "[2018-11-24 TO 2019-01-04]"],

我试图查询这样我将匹配多值字段的单个值,或者完全落在单个值之间。但是目前,我的查询似乎只是看到它是否会在任何值中部分匹配并返回文档,如果是这样的话。

就像我查询一样:

&fq=dmvf_rab_date_range:[2018-11-10 TO 2018-11-24]

即使该文件在该字段的单个值之间没有匹配或完全匹配,也会返回该文档。

1 个答案:

答案 0 :(得分:1)

DateRangeFields的默认运算符为Intersects。由于您的查询范围与[2018-11-03 TO 2018-11-16]相交/重叠,因此您会受到影响。

你可以set the operator through a localparam

&fq={!field f=dmvf_rab_date_range op=Contains}[2018-11-10 TO 2018-11-24]

如果索引范围包含查询范围,这将为您提供匹配。您还拥有运算符Within - 为您提供属于查询范围的范围(我不完全确定您想要的范围)。