我正在使用sunspot
。我如何运行LIKE
查询(LIKE %q%
)?我愿做这样的事情:而不是太阳黑子`LIKE`查询
@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%
没有更简单的方法,我应该如何创建新类Like
与方法to_solr_conditional
它生成SOLR逻辑?
你的意思是“部分为我工作”? :)事实上,问题是搜索不起作用,或者你只是想要一个方法别名? – 2011-05-18 17:07:27
另外,你的意思是“不简单的方式”?什么比.starting_with('sta')更简单? – 2011-05-18 17:14:09
嘿弗拉德,感谢您的回答,我将在下面的要点中解释为什么它对我有部分作用。 https://gist.github.com/8257e7c4e512aa8a45df谢谢! – jpemberthy 2011-05-18 18:43:57