Solr中不区分大小写的拼写检查

时间:2011-08-24 22:52:57

标签: solr spell-checking case-insensitive lowercase

我们如何在solr中使用拼写检查器来忽略大小写?对于查询:“Lether”,我得到的建议是“皮革”,这是正确的。但如果查询是“lether”,我会得到一些不同的建议,例如“lethel”,这是不正确的。

我尝试了this post中提到的配置,但它似乎没有用。

我在此处复制了我的配置以供参考:

<fieldType name="text_spell" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
     <tokenizer class="solr.StandardTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory"/>
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
   </analyzer>
   <analyzer type="query">
     <tokenizer class="solr.StandardTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory"/>
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
   </analyzer>
</fieldType>

<field name="spelltext" type="text_spell" indexed="true" stored="false" multiValued="true"/>
<field name="title" type="text" indexed="true" stored="true" multiValued="false" omitNorms="true"/>
<copyField source="title" dest="spelltext" />

我有什么明显的遗漏吗?

1 个答案:

答案 0 :(得分:0)

您还没有在spellchecker组件中使用小写过滤器指定fieldType,例如,

<lst name="spellchecker">
  <str name="name">spell</str>
  <str name="field">text_spell</str>
  <str name="spellcheckIndexDir">spell</str>
  <str name="buildOnOptimize">true</str>
</lst>

其次,还要注意buildOnOptimizeoptimize命令上重建拼写检查索引。