如何用OR条件编写sphinx查询

时间:2015-07-03 06:04:13

标签: sphinx

我需要在项目中使用OR条件创建一个sphinx查询。但是给出像

这样的OR条件
import re

new_order_finder3 = re.compile("(?:^|\x01)(11|15|35|38|54|55)=(.*?)(?=\x01)")

if __name__ == "__main__":
    line = "20150702-05:36:08.687 : 8=FIX.4.2\x019=209\x0135=D\x0134=739\x01"\
        "49=PINE\x0152=20150702-05:36:08.687\x0156=CSUS\x011=KI\x01" \
        "11=N09080243\x0115=USD\x0121=2\x0122=5\x0138=2100\x0140=2\x01" \
        "44=126\x0148=AAPL.O\x0154=1\x0155=AAPL.O\x0157=DMA\x0158=TEXT\x01" \
        "60=20150702-05:36:08.687\x01115=Tester\x016061=9\x0110=087\x01"
    fields3 = dict(re.findall(new_order_finder3, line))
    print(fields3)

无效。它返回一个错误,如

select cost FROM transactionsChart WHERE cost=25 OR cost=5;

任何人都可以帮助我....

提前致谢

2 个答案:

答案 0 :(得分:8)

Sphinx不支持WHERE子句中的OR,仅 AND

对于您的具体示例,可以使用IN语法

sphinxql> SELECT cost FROM transactionsChart WHERE cost IN (5,25);

或更通用的解决方案是使用虚拟属性

sphinxql> SELECT cost, IF(cost=25 OR cost=5,1,0) AS filter 
      FROM transactionsChart WHERE filter = 1;

答案 1 :(得分:-2)

尝试

select cost FROM transactionsChart WHERE cost=25 | cost=5;

Source - Official Documentation