【发布时间】:2013-12-03 12:04:55
【问题描述】:
我允许用户用拉丁字母输入俄语单词。如果用户在拉丁字母中拼错了俄语单词,我希望 Solr 拼写检查器以西里尔字母建议正确的单词(索引中的俄语单词是西里尔字母)。但是,如果用户拼错的不是俄语单词(例如品牌名称),则应该用拉丁字母进行更正(索引中的不是俄语单词是拉丁语)。
例如,tilevizor smasung 应固定为 телевизор samsung
现在我正在使用以下配置:
<fieldType name="spell_ru" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ICUTransformFilterFactory" id="Any-Cyrillic; NFD; [^\p{Alnum}] Remove" />
</analyzer>
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.LengthFilterFactory" min="3" max="256" />
</analyzer>
</fieldType>
它将查询转换为西里尔字母,因此俄语单词更正有效。但拉丁语没有。 (tilevizor 到 телевизор 有效,但 smasung 到 samsung 无效)。
有什么想法,我怎样才能让拼写检查器同时纠正西里尔文和拉丁语单词?
【问题讨论】:
-
您的实际拼写检查配置是什么。以上只是字段定义。
标签: solr