0

我正在使用acts_as_ferret 对我的数据库进行非常简单的搜索。我把它放在我的“场地”模型中:

acts_as_ferret :fields => [:name, :city]

这是在我的控制器搜索操作中:

@t = Venue.find_by_contents(params[:search]+'~')

然后我只是渲染结果。

render :text => @t.to_json, :success => true, :status => :ok

如果我进行快速测试:

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

我在日志中看到正确的查询“The~”正在索引上执行。但是,我没有得到任何结果。我肯定有一些在名称字段中带有“The”一词的“Venues”。

由于这是一个非常简单的搜索并且经常使用acts_as_ferret,因此我尝试重建索引以查看它是否已损坏......没有骰子

有任何想法吗?

谢谢!

4

2 回答 2

2

是的,Ferret 以破坏索引而闻名。

我建议切换到另一个搜索插件,例如Thinking Sphinx。您可以观看有关它的 Railscast以了解更多信息。

于 2009-04-14T06:20:10.590 回答
1

我认为问题可能在于“the”被定义为停用词——一个非常常见的词,它没有被索引,因为它只会返回每个文档。您可以配置停用词列表。

如果您在使用 Ferret 时遇到问题,我会考虑使用 Solr。

于 2009-12-02T14:46:17.143 回答