【问题标题】:Search solr and sunspot搜索 solr 和太阳黑子
【发布时间】:2014-03-29 19:57:29
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails search solr sunspot


    【解决方案1】:

    您需要在 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 对此有很多细节;我通常会在谷歌上搜索“在 Solr 中做 x”或“为什么 solr 在做 y”。幸运的是,有很多聪明人都在使用 Solr。

    【讨论】:

    • 我按照这个教程github.com/outoftime/sunspot,没有创建schema.xml文件
    • 它应该在/solr/conf。更改后需要重新启动 solr 并重新索引。
    • 谢谢它成功了,还有一个问题,如果我想搜索名字以外的地方,省也?我尝试添加模型“integer Province_id”不起作用。
    • integer :province_idsearchable 块中,然后您可以在搜索块中执行with(:province_id, params[:province_id])
    • 无效,输入“Casca”返回空,如下:pastebin.com/vE96ALXH
    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多