曾经有一天 一个运营提个需求,需要在一个列表页面中按照条件选出商品
条件是用SQL的形式就是
is_on_sale AND ( (price >20 AND cat_id iN(1,2)) OR (price >30 AND cat_id iN(3,4)) )
SPHINX 实现就是
$cl->SetSelect("@id, IF((shop_price >4.99 AND iN(cat_id_all,".implode(',', $cat_ids_women).")) OR ( iN(cat_id_all,".implode(',', $cat_ids).")),1,0) as is_summer_show");
$cl->SetFilter('is_summer_show', [1]);
这样就可以实现复杂的一些查询,不过可能效率会低一点。所以建议不要这样实现。