有没有办法让Solr搜索模糊和精确?

时间:2012-10-22 16:40:08

标签: ruby-on-rails-3 solr sunspot-rails fuzzy-search exact-match

感谢您抽出宝贵时间

问题

我在基于模糊名称搜索和精确的Regio搜索搜索记录时遇到问题。这就是我现在所拥有的:

我现在拥有什么

# :klantnaam is a param from a search-form
@param = Staffingcustomer.search do
    fulltext params[:klantnaam]
end
@staffingcustomers = @param.results

还有另一个领域,'Regio' 结果应该只有一个'Regio'。

示例要求

所以例如,
我是Regio 3的用户。 我想用模糊名称搜索Anne和我自己的Regio 3来可视化/选择所有Staffingcustomers。所以,我不想看到有Regio 2的Staffingcustomers。

现在发生的事情是:

@param = Staffingcustomer.search do
     fulltext 'anne'
end
@staffingcustomers = @param.results

将使所有不同的Regios返回所有Staffingcustomers ......

经过一些研究/逻辑思考

我认为它可能类似于以下内容:

@param = Staffingcustomer.search do
    fulltext params[:klantnaam]
end
@staffingcustomers = @param.results.find(:all, :conditions => {:regio => 3})

@param = Staffingcustomer.search do
    fulltext params[:klantnaam] and fulltext '3'   ## or 3, without the quotes
end
@staffingcustomers = @param.results

但这似乎不起作用。

你能帮我解决这个问题吗?

逻辑问题

实际上,这是对巨大桌子的“精确选择”部分的模糊搜索。

希望你能提供帮助。

提前致谢。

KERS。

1 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

# find Staffing Customers with Regio 3 and text of params[:klantnaam]
@param = Staffingcustomer.search do
  with(:regio, 3)
  fulltext params[:klantnaam]
end
@staffingcustomers = @param.results

请参阅https://github.com/sunspot/sunspot#readme。您还必须将您的Staffingcustomer模型的Searchable块中的regio编入索引,作为您在DB中存储的任何数据类型(例如,整数)。