一、需要配置文件:
solr/conf/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 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.NGramFilterFactory"
minGramSize="3"
maxGramSize="30"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>`
</fieldType>
可以在此处找到有关 Solr 配置的非常好的参考:
http://techbot.me/2011/01/full-text-search-in-in-rails-with-sunspot-and-solr/
但是,请注意,当涉及到与此参考匹配的部分单词时,它只会对单词EdgeNGramFilterFactory
的开头进行索引。为了使 Solr 匹配单词的任何部分,NGramFilterFactory
需要使用 。
另请注意,我们已设置minGramSize
to3
和maxGramSize
to 30
。因此,长度小于 3 或大于 30 的模式将不会在查询中返回。