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

Match single value of multivalued daterange field

假设我在我的架构中定义了一个字段,然后索引为 '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" />

然后索引一组值,使它们 return 如下所示:

["[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]"],

我正在尝试查询以匹配多值字段的单个值或完全介于单个值之间。但目前,我的查询似乎只是查看它是否会在任何值中部分匹配,如果是这样的话 return 文档。

比如我查询:

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

该文档将被 return 编辑,即使它不匹配或完全落在字段的单个值之间。

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 - 为您提供属于查询范围内的范围(我不完全确定您想要哪个)。