如何匹配Solr中多值date_range字段的单个值
匹配Solr多值DateRangeField中的单个范围值
没问题,针对你这个多值DateRangeField匹配单个范围值的需求,我给你整理了几种实用的查询方式:
1. 精确匹配完整的日期范围值
因为你的dmvf_rab_date_range是多值字段,要匹配其中某一个具体的范围条目,直接使用精确字符串匹配就可以。把你要匹配的完整范围用双引号包裹,作为查询条件:
q=dmvf_rab_date_range:"[2018-04-07 TO 2018-04-07]"
这样查询会返回所有dmvf_rab_date_range字段中包含这个精确范围值的文档——多值字段只要有一个元素匹配就会命中。
2. 匹配开放型日期范围值
如果要匹配像[2018-11-24 TO ...]这种开放结尾的范围值,同样用精确字符串匹配,保留原始的开放格式即可:
q=dmvf_rab_date_range:"[2018-11-24 TO ...]"
3. 关键注意点:区分精确匹配和范围查询
一定要注意别把精确匹配和Solr的原生范围查询搞混:
- 如果去掉双引号,写成
q=dmvf_rab_date_range:[2018-04-07 TO 2018-04-07],这其实是在查询字段中所有与该日期有交集的范围,而不是精确匹配字段里存储的那个具体范围值。 - 只有用双引号包裹范围字符串,才会让Solr去匹配字段中存储的完整范围条目。
内容的提问来源于stack exchange,提问作者gcalex5
相关产品推荐
相关产品推荐

