【发布时间】:2011-10-24 18:31:46
【问题描述】:
我正在开发一个 SolR 项目以创建拼写检查器。
为什么如果我输入“britne”,它会自动完成“britney”,但当我输入“Britne”时却找不到任何结果?这是我的拼写检查领域:
<fieldType name="suggestText" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" ignoreCase="true"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory" ignoreCase="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" ignoreCase="true"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory" ignoreCase="true"/>
</analyzer>
</fieldType>
它在查询部分和索引部分都有 LowerCaseFilterFactory,所以我猜它会将我的查询转换为小写并与以小写形式存储的单词进行比较,但显然不是。
此外,当我输入“Britne”、“britne”或“BriTnE”时,我希望得到结果“Britney”(而不是“britney”)。如何使我的拼写检查器不区分大小写但返回“区分大小写的单词”?
【问题讨论】:
标签: solr spell-checking case-insensitive