You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ChildDocTransformer按日期范围过滤Solr子文档?

用ChildDocTransformer过滤有效子文档

嘿,这个需求刚好是ChildDocTransformer的典型应用场景,直接在fl参数的childFilter里写日期范围条件就行,给你捋清楚怎么弄:

核心查询示例(用当前日期过滤)

如果要筛选当前UTC时间落在子文档startDate_dt和endDate_dt区间内的子文档,对应的Solr查询可以这么写:

q=*:*
fl=*, [child parentFilter=docType:"VEHICLE" childFilter=startDate_dt:[* TO NOW/DAY] AND endDate_dt:[NOW/DAY TO *]]

关键细节拆解

  • NOW/DAY是Solr自带的日期变量,会自动取当前UTC日期的零点,能避免时分秒的干扰;如果业务需要精确到具体时间,直接用NOW就行
  • 别给子文档字段加父文档前缀(比如你之前写的promotion.startDate_dt是多余的,直接用子文档本身的字段名startDate_dt就好)
  • 过滤逻辑是:子文档的起始日期≤当前日期 并且 结束日期≥当前日期,确保当前时间完全落在有效区间内

进阶:用固定日期过滤

如果不是用当前时间,而是指定某个固定日期(比如你示例里的2018-04-03),可以这么写:

q=*:*
fl=*, [child parentFilter=docType:"VEHICLE" childFilter=startDate_dt:[* TO 2018-04-03T00:00:00Z] AND endDate_dt:[2018-04-03T00:00:00Z TO *]]

避坑提醒

  • 一定要确保子文档的startDate_dt和endDate_dt字段是Solr的date类型,不然日期范围查询会直接失效
  • 就算父文档和子文档有同名字段也不用担心,childFilter只会作用于子文档的字段,不会影响父文档的内容

内容的提问来源于stack exchange,提问作者Raibaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:15:02