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

如何扩展ProductSearchCriteriaEvent搜索条件并解决空白搜索结果问题

解决ProductSearchCriteriaEvent扩展搜索条件的问题

你的代码出现空白搜索结果的原因是:直接调用addFilter()会将新的OrFilter与原有搜索条件以AND逻辑组合,只有同时满足原搜索条件和额外商品条件的结果才会被返回。如果原搜索词未匹配到任何商品,自然就会返回空结果。

要实现「保留原有搜索结果 + 额外指定商品」的需求,需要将原有搜索条件与额外商品的条件用OR逻辑组合,具体修正代码如下:

class ProductSearchSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            ProductSearchCriteriaEvent::class => 'extendSearchCriteria',
        ];
    }

    public function extendSearchCriteria(ProductSearchCriteriaEvent $event): void
    {
        $criteria = $event->getCriteria();
        $originalFilter = $criteria->getFilter();

        // 定义额外需要加入的商品筛选条件
        $additionalFilter = new OrFilter([
            new EqualsFilter('productNumber', 'SW000001'),
            new EqualsFilter('productNumber', 'SW000002'),
        ]);

        // 组合原有条件与额外条件:满足原有搜索规则 或者 属于指定商品
        $combinedFilter = $originalFilter 
            ? new OrFilter([$originalFilter, $additionalFilter]) 
            : $additionalFilter;

        // 替换原有筛选条件为组合后的逻辑
        $criteria->setFilter($combinedFilter);
    }
}

修改后,搜索结果会同时包含两类商品:

  • 原有搜索词匹配到的商品
  • 指定编号的SW000001、SW000002商品

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:22:05