Mysql 到 Sphinx 查询转换

Mysql to Sphinx query conversion

如何在 sphinx select * from vehicle_details where make LIKE "%john%" OR id IN (1,2,3,4) 上编写此查询,谁能帮帮我?我搜索了很多,但找不到答案。请帮忙

实际上很难做到,因为您将字符串搜索(LIKE 将是 MATCH)与属性过滤器混合在一起。

会建议两个单独的查询,一个针对文本过滤器的 sphinx。而 IN 过滤器直接在数据库中执行 (mysql?)。合并应用程序中的结果。

好吧,如果你真的想使用 sphinx,也许可以将 id 做成一个假关键字,这样就可以在 MATCH 中使用它,例如

sql_query = SELECT id, CONCAT('id',id) as _id, make, description FROM ... 

现在您有一个可以匹配的基于 id 的关键字。

SELECT * FROM index WHERE MATCH('(@make *john*) | (@_id id1|id2|id3|id4)')

但是请仔细阅读 sphinx 关键字匹配,因为默认情况下 sphinx 仅匹配整个单词,您需要启用部分单词与通配符匹配(例如使用 min_infix_len),这样您可以获得 关闭 到简单的 LIKE %..% 匹配(不考虑单词)