太阳黑子`LIKE`查询
我正在使用sunspot
。 如何运行LIKE
查询( LIKE %q%
)? 我想做这样的事情:
@search = Sunspot.search(User) do |q| q.text_fields { with(:company_name).like(params[:q]) } end.results
代替:
@search = Sunspot.search(User) do |q| q.text_fields { with(:company_name).starting_with(params[:q]) } end.results
这部分对我有用。 回顾sunspot
代码,我找到了这段代码:
class StartingWith < Base private def to_solr_conditional "#{solr_value(@value)}*" end end
它基本上生成以下太阳黑子搜索哈希:
Sunspot.search(User) do |q| q.text_fields { with(:company_name).starting_with("sta")} } end => Sunspot::Search:{:q=>"*:*", :fq=>["type:User", "company_name_text:sta*"]}
如果没有更简单的方法来实现LIKE %query%
,我应该如何创建一个新类与生成SOLR逻辑的方法to_solr_conditional
Like
?
如果使用标准的DisMax处理程序,则它不支持通配符。 你有2个选择:
一个。 激活EdgeNGramFilter:
.. ..
湾 每晚使用EDismax Handler构建Solr。
请参阅有关太阳黑子文档的wiki文章或关于SO的类似问题 。