Ruby 太阳黑子类查询
我正在使用太阳黑子。如何运行Ruby 太阳黑子类查询,ruby,solr,sunspot,sunspot-rails,edismax,Ruby,Solr,Sunspot,Sunspot Rails,Edismax,我正在使用太阳黑子。如何运行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[
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
这在一定程度上对我有效。回顾太阳黑子
代码,我发现了以下代码:
class StartingWith < Base
private
def to_solr_conditional
"#{solr_value(@value)}*"
end
end
如果没有更简单的方法实现
LIKE%query%
,我应该如何使用方法创建一个新的类LIKE
,该方法生成solr逻辑?如果使用标准的DisMax处理程序,它不支持通配符。您有两种选择:
a。激活Edgengram过滤器:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
..
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
..
</analyzer>
</fieldType>
请参见或。您所说的“部分为我工作”是什么意思?:)事实上,问题是搜索不起作用,或者您只是想要一个方法别名?还有,“没有更简单的方法”是什么意思?还有什么比这更简单的呢。从('sta')开始?嘿,弗拉德,谢谢你的回答,我将在下面的要点中解释为什么它对我部分有效。谢谢那么,你解决问题了吗?这个回答有用吗?嘿,弗拉德,刚刚意识到你已经回答了,谢谢。正在检查:)。
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
..
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
..
</analyzer>
</fieldType>