Ruby on rails 使用Rails Solr搜索子字符串

Ruby on rails 使用Rails Solr搜索子字符串,ruby-on-rails,ruby,solr,full-text-search,Ruby On Rails,Ruby,Solr,Full Text Search,我使用gem sunspot_solr进行全文搜索,但我需要搜索子字符串,例如:“teststring”,我需要搜索这个输入'est','tr','ing' 我需要为此做些什么?请在下面找到使用太阳黑子搜索子串的详细信息 执行前缀/子字符串匹配的最佳方法是在Solr中使用NGramFilter(子字符串)或EdgeNGramFilter(前缀)过滤器 首先,将新类型添加到架构中: <fieldType class="solr.TextField" name="text_pre" posit

我使用gem sunspot_solr进行全文搜索,但我需要搜索子字符串,例如:“teststring”,我需要搜索这个输入'est','tr','ing'


我需要为此做些什么?

请在下面找到使用太阳黑子搜索子串的详细信息

执行前缀/子字符串匹配的最佳方法是在Solr中使用
NGramFilter(子字符串)或EdgeNGramFilter(前缀)过滤器

首先,将新类型添加到架构中:

<fieldType class="solr.TextField" name="text_pre" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
更多参考:

将此代码添加到
rails\u dir/solr/conf/schema.xml
在文本/字符串字段类型下。
.
.
.

<dynamicField name="*_textp" stored="false" type="text_pre" multiValued="true" indexed="true"/>
 searchable do
  text :code, :as => :code_textp
  # etc.
end
Add this code inside 
rails_dir/solr/conf/schema.xml

Under text/string field type. 

<fieldType name="text" class="solr.TextField" omitNorms="false">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        .
        .
        .
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="20" side="front"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="20" side="back"/>
      </analyzer>