sphinx SphinxQL不支持OR操作解决方案

sphinx是一个开源的全文搜索引擎,与mysql、postgreSQL、xml完美结合,查询速度非常快,支持分布式检索,可扩展性好,并行处理,高效的利用内存和磁盘IO。强大的过滤、分组、排序、分页功能,强化mysql的功能和性能,针对mysql分库分表后,sphinx也是一种可行的解决方案。关于sphinx应用的一些文章可以参见http://www.ttlsa.com/?s=sphinx

在使用sphinx SphinxQL接口过程中,使用多个属性来进行过滤,发现不能使用OR。

mysql

查询语句:select * from ttlsa_com_main where usecount=8290 or uptime=1342076161;

报错的信息如下:ERROR 1064 (42000): syntax error, unexpected TOK_OR, expecting $end near ‘or’。

查了下官方文档有这么一句:WHERE clause. This clause will map both to fulltext query and filters. Comparison operators (=, !=, <, >, <=, >=), IN, AND, NOT, and BETWEEN are all supported and map directly to filters. OR is not supported yet but will be in the future.

目前WHERE子句不支持OR。那么该如何解决呢?

1. 对于单个属性列的多个值过滤可以使用IN。如

2. 对个多个属性列。可以这么来做,查询语句还是上面的那句,改成下面的

这样就可以了。 sphinx做为全文搜索,很多地方都在大量的时候。强烈推荐,谁用谁知道。

如需转载请注明出处: sphinx SphinxQL不支持OR操作解决方案  http://www.ttlsa.com/html/2361.html