Sphinx返回糟糕的搜索结果

我正在使用Sphinx和Thinking Sphinx插件。 我使用以下代码索引了一个名为Venue的模型(以及rake thinking_sphinx:index命令)

define_index do indexes :name indexes city indexes zip end 

我使用以下代码在控制器中获取结果:

 @venues = Venue.search params[:search] 

我将它们渲染为json。 我遇到的问题是,当我点击此url时:

 http://localhost:3000/venue/list?search=Baltimo 

我一无所获。 但是当我点击此url时:

 http://localhost:3000/venue/list?search=Baltimor 

我得到了位于巴尔的摩市的所有场地。 出于某种原因,一个角色有所作为。 从理论上讲,如果我只搜索一个角色,我应该在巴尔的摩获得所有场地 – ‘b’

有谁知道这里发生了什么?

谢谢

除非你将enable_star设置为1并将min_prefix_lenmin_infix_len设置为1或更多,否则你不会得到B匹配巴尔的摩(即便如此,我认为你需要搜索B *来获得匹配)。

这里发生的事情是,默认情况下,Thinking Sphinx告诉Sphinx使用英语词干分析器,它允许类似的单词(按字符,而不是意义)被视为匹配,因此它将BaltimorBaltimore放在同一个篮子里。

如果你想得到任何单词匹配的任何部分,那么你需要在config / sphinx.yml中添加如下内容:

 development: enable_star: 1 min_infix_len: 1 test: enable_star: 1 min_infix_len: 1 production enable_star: 1 min_infix_len: 1 

然后停止Sphinx,重新索引并重新启动Sphinx。 一旦你完成了,那么搜索B *应该返回巴尔的摩。

希望这可以帮助。