【问题标题】:How to make conditions with CASE WHEN in SphinxQL?如何在 SphinxQL 中使用 CASE WHEN 创建条件?
【发布时间】:2015-05-19 20:01:12
【问题描述】:

如何设置 Sphinx 搜索的条件?在我的自定义 MySQL 代码中,如下所示。

如何将其重新编码为 Sphinx 搜索?

$condition = "(CASE WHEN related_type ='Course' THEN related_id = 1 
              ELSE related_id IN(2,3,4)
              END)";

【问题讨论】:

    标签: php mysql search sphinx


    【解决方案1】:

    SphinxQL 有一个IF() 函数,可以以类似的方式使用。

    例如:

     SELECT *, IF(related_type='Course', related_id=1, IN(related_id, 2,3,4) ) AS filter 
          FROM myindex WHERE filter = 1
    

    函数需要在SELECT 部分中,而不是在WHERE

    (还要注意 IN() 的语法略有不同。在 sphinx 中它是一个函数)

    【讨论】:

    • 这是 where 条件的过滤器。但是我们如何像在 mysql 中使用 CASE WHEN 一样根据案例获取字段值?
    • 那么Fields需要在全文查询中匹配。这样就形成了一个合适的查询,然后放入MATCH(..) 查询。全文查询不能依赖于属性,因此必须确保所有值都存储在字段中。
    猜你喜欢
    • 2023-04-01
    • 2016-01-24
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2023-02-04
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多