是否可以使用OR进行类似AND条件的操作?
这是我的简单狮身人面像查询AND
仅...
Job.search('', {with: {canonical_type: Zlib::crc32('SubCategory')}, conditions: { sub_category_ids: [4]}})
Sphinx Query (22.8ms) SELECT * FROM `job_core`, `job_delta` WHERE MATCH('@sub_category_ids [4]') AND `canonical_type` = 1916160457 AND `sphinx_deleted` = 0 LIMIT 0, 20 OPTION max_matches=50000
Sphinx Found 1 results
我想添加一个OR ......类似......
WHERE (MATCH('@sub_category_ids [4]') AND `canonical_type` = 1916160457 OR MATCH('@sub_category_ids [4]') AND `canonical_type` = 4282022807)
这样我就可以搜索不同canonical_type
的ID。
不确定如何在Thinking Sphinx中做到这一点。
谢谢!
答案 0 :(得分:0)
这实际上是Sphinx本身的限制。它不支持WHERE(也不是嵌套)中的OR - 这就是为什么它不在思考 - sphinx。
但是
WHERE (MATCH('@sub_category_ids [4]') AND `canonical_type` = 1916160457
OR MATCH('@sub_category_ids [4]') AND `canonical_type` = 4282022807)
可以写成SphinxQL:
WHERE MATCH('@sub_category_ids [4]') AND `canonical_type` IN (1916160457,4282022807)
...即IN()运算符有点像' OR'。如果thinkinx-sphinx自动使用数组
,那么不会感到惊讶with: {canonical_type: [Zlib::crc32('SubCategory1'), Zlib::crc32('SubCategory2')] }