搜索solr和太阳黑子

时间:2014-02-26 19:00:15

标签: ruby-on-rails search solr sunspot

我有以下问题,我有模范城市(名称,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

1 个答案:

答案 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。