我有以下问题,我有模范城市(名称,uf,省)试图实施太阳黑子研究的方法,但我得到了:
# modelCity.rb
searchable do
text :name
end
# controller City
unless params[:search]
@cities = City.paginate(:page => params[:page], :order => "name ASC")
else
@search = City.search do
fulltext params[:search]
end
@cities = @search.results
end
城市数据库:
1 Medianeira PR 3
2 Cascavel PR 4
3 Cascavemat PR 3
如果我输入例如“Cascavel”,他会带来一定的任务,但是如果我输入“Casca”,我希望他带来所有那些与这个名字相关的城市。有谁知道怎么做?
OBS:使用rails 4,遵循教程:git sunspot
答案 0 :(得分:0)
您需要在Solr schema.xml
中对其进行配置,以计算文本字段的N-gram。这是一个可能的例子:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Solr Wiki有很多细节;我通常最终谷歌搜索“在索尔做x”或“为什么solr做y”。幸运的是,有很多聪明人在那里使用Solr。