【发布时间】:2011-08-22 01:03:23
【问题描述】:
我正在使用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%,我应该如何使用to_solr_conditional 生成SOLR 逻辑的方法创建一个新类Like?
【问题讨论】:
-
你说的“部分适合我”是什么意思? :) 其实问题是搜索不行,还是你只想要一个方法别名?
-
另外,“没有更简单的方法”是什么意思?还有什么比 .starting_with('sta') 更简单的呢?
-
嘿,弗拉德,感谢您的回答,我将在下面的要点中解释为什么它对我部分有用。 gist.github.com/8257e7c4e512aa8a45df 谢谢!
标签: ruby solr sunspot sunspot-rails edismax