加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用“sunspot for rails”进行部分匹配?

发布时间:2020-12-17 03:38:38 所属栏目:百科 来源:网络整理
导读:我刚刚设置了sunspot_rails,除了一件事情似乎运作良好. 之后我做了3条记录如下 姓名=约翰 name = John2 name = John3 当我使用关键字“John”搜索时,只显示第一条记录.它看起来像完全匹配. 我希望所有这些都作为搜索结果出现. 这应该是默认发生的吗? 还是我
我刚刚设置了sunspot_rails,除了一件事情似乎运作良好.
之后我做了3条记录如下

>姓名=约翰
> name = John2
> name = John3

当我使用关键字“John”搜索时,只显示第一条记录.它看起来像完全匹配.
我希望所有这些都作为搜索结果出现.

这应该是默认发生的吗?
还是我设置错了?

解决方法

如果您想在全文搜索中返回子字符串,可以查看

https://github.com/sunspot/sunspot/wiki/Matching-substrings-in-fulltext-search

您还可以在myapp / config / initializers /中添加文件sunspot_solr.rb以对结果进行分页:

Sunspot.config.pagination.default_per_page = 100

在这种情况下返回100结果.

添加:

您的schema.xml文件是在yourappfolder / solr / conf中创建的

您还可以添加< filter class =“solr.NGramFilterFactory”/>匹配任意子串.

这是我对schema.xml的特殊配置:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
<fieldtype class="solr.TextField" name="text_pre" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="10"/>
    <filter class="solr.ISOLatin1AccentFilterFactory"/>
    <filter class="solr.TrimFilterFactory" />
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.ISOLatin1AccentFilterFactory"/>
    <filter class="solr.TrimFilterFactory" />
  </analyzer>
</fieldtype>

对我来说,它适用于所有关键字的完整字符串和子字符串.请不要忘记重新启动服务器并重新索引模型以使更改生效.

问候!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读