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

在Flexible Search中合并两个无关联查询以获取所有删除项

合并查询获取索引器删除项方案

我们需要在自定义索引器中实现删除逻辑:

  • 删除类别时,对应记录会存入SolrDeletedItem表
  • 删除产品时,仅将其审批状态设置为unapproved

要获取指定时间范围内的所有待删除项(类别+产品),可以用UNION ALL合并两个独立查询,最终SQL如下:

SELECT {deletedItemPK} AS pk
FROM {SolrDeletedItem AS sdi JOIN ComposedType AS ct ON {sdi.deletedItemType} = {ct.pk}}
WHERE {ct.code} = 'Category' AND {sdi.modifiedtime} >= ?lastIndexTime

UNION ALL

SELECT {p.PK} AS pk
FROM {Product AS p JOIN ArticleApprovalStatus AS aas ON {aas.pk} = {p.approvalStatus}}
WHERE {aas.code} = 'unapproved' AND {p.modifiedtime} >= ?lastIndexTime

说明:

  1. 用UNION ALL而非UNION:因为两个查询的结果集无重复(类别和产品的主键属于不同业务实体,不会重叠),UNION ALL不需要做去重处理,性能更优
  2. 统一输出字段名:两个子查询都将结果字段命名为pk,保证合并后的结果结构一致
  3. 时间条件复用:两个查询都保留了modifiedtime >= ?lastIndexTime的过滤条件,确保只获取索引器上次运行后新增的待删除项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:04:57