我想用solr实现一个自动补全搜索。用户正在搜索人名。自动补全由NGrams完成。这是正常工作的,所以当我搜索"Caro“时,我找到了”卡罗琳“。我现在想做的是一个字符映射。用户应该通过在搜索中输入"Karo“来找到"Caroline”。因此,"k“将映射到"c”。当我使用下面的配置进行搜索时,我搜索"Karo“或”卡罗琳“("Caro”有效),得到的结果为空。
我已经创建了一个包含以下内容的mapping.txt:
"k" => "c"以下是我的字段配置:
<fieldType name="string_wildcard" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="/home/martin/mapping.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>我希望你能帮助我。谢谢!
发布于 2011-10-10 02:50:29
您正在使用"k“=> " c ",它将只替换小写的k to c。
您需要向筛选器链添加小写筛选器,使其不区分大小写。
<fieldType name="string_wildcard" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="/Users/jayendrapatil/solr/trunk/solr/example/solr/conf/mapping-ISOLatin1Accent.txt"/>
</analyzer>
</fieldType>https://stackoverflow.com/questions/7705124
复制相似问题