来自Thinking Sphinx的奇怪查询

时间:2016-08-05 18:19:31

标签: ruby-on-rails thinking-sphinx

我一直在思考Sphinx的查询生成问题。我会输入一个查询,比如'“jack |”bean stalk“| jill | jeffrey”,而不是预期的快速索引循环,我得到了慢速SQL查询:

  

SELECT table.id,table.FullName FROM table WHERE   (LOWER(table.FullName)LIKE'%jack or \“the bean stalk \”或jill or   jeffrey%')ORDER BY table.FullName ASC LIMIT 10

由于多种原因,此查询很奇怪。首先,我得到一个错误的查询版本的通配符,而不是布尔查找。其次,当我通过(LastName)请求其他字段排序时,它按FullName排序搜索。

我知道当针对未指定的列进行排序时,Thinking Sphinx将绕过其索引并放入本机SQL查询:sortable =>是的,它将在非字符串的列上执行此操作。但是这里的情况都不是这样。

为什么要放入原生SQL?

1 个答案:

答案 0 :(得分:0)

我绝对肯定Thinking Sphinx没有进行SQL查询。我想知道:你有其他宝石(在你的Gemfile中,或者可能是其他宝石的依赖项?),它们会增加可能妨碍搜索功能的搜索功能吗?例如,我知道activeadmin依赖于meta_search

解决此问题的一种可能方法是在Gemfile中 activeadmin之前列出(或导致此问题的任何宝石)(因此,TS得到)在之后加载,并插入您期望的thinking-sphinx方法。