【发布时间】:2011-11-11 23:10:26
【问题描述】:
我的数据库或 Solr 索引中有以下 2 个产品:Total War: Shogun 2 [下载] 和 彩蛋。
我希望搜索能够做的是匹配这 2 个有错误的产品,例如:
"Egggs", "Eggz", "Eg", "Egs" and "Shogn Download", "Totle War","Tutal War: Shogunn 2 Download" 等
编辑(有点工作):
这将使您入门,尽管在搜索中使用不同的字符仍然会遇到问题,即仅使用 “鸡蛋” 和 “超值维生素 D 全脂牛奶” 可能拼写错误而不是“Total War: Shogun 2”。
新代码:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="1" splitOnNumerics="1" splitOnCaseChange="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="1" splitOnNumerics="1" splitOnCaseChange="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
理想的情况是能够像 Google 一样进行我的搜索,它可以很好地纠正您的拼写,无论是小写、大写还是一些错误。如何使我的搜索类似于 Google 所做的?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 solr sunspot