2017-05-01 59 views
0

是否可以像OR条件那样做AND条件?思维与狮身人面像中的AND和OR条件

这是我简单的狮身人面像的查询只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 

我想补充的或者......像......

WHERE (MATCH('@sub_category_ids [4]') AND `canonical_type` = 1916160457 OR MATCH('@sub_category_ids [4]') AND `canonical_type` = 4282022807) 

这样我就可以搜索不同canonical_type的ID。

不知道如何去思考狮身人面像。

谢谢!

回答

0

这是狮身人面像本身的限制。它不支持OR中的WHERE(也不嵌套) - 这就是为什么它不在思考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) 

...即()运算符是有点像 '或'。如果thinkinx - 狮身人面像基于http://freelancing-gods.com/thinking-sphinx/searching.html#filters

一个阵列

with: {canonical_type: [Zlib::crc32('SubCategory1'), Zlib::crc32('SubCategory2')] } 

自动执行它也不会感到惊讶