假设我在架构中定义了一个字段,然后将其编入索引为' 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]
即使该文件在该字段的单个值之间没有匹配或完全匹配,也会返回该文档。
答案 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
- 为您提供属于查询范围的范围(我不完全确定您想要的范围)。