如何在Solr中忽略重音搜索

时间:2014-04-19 12:43:51

标签: solr

我使用solr作为搜索引擎。我有一个案例,其中文本字段包含重点文本,如"María"。当用户使用"María"进行搜索时,它正在进行重新调整。但是当用"Maria"用户搜索时,它没有给出任何结果。

我的架构定义如下所示:

<fieldtype name="my_text" class="solr.TextField">
       <analyzer type="Index">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
           <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="32" side="front"/>
       </analyzer>
       <analyzer type="query">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>

       </analyzer>
</fieldtype>

请帮助解决此问题。

2 个答案:

答案 0 :(得分:8)

如果您正在使用solr&gt; 3.x你可以尝试使用solr.ASCIIFoldingFilterFactory,它会将所有重音字符从基本的ascii 127字符集改为非重音版本。

记得把它放在你配置的任何阻塞过滤器之后(你没有使用过,所以你应该没问题)。

所以你的配置看起来像:

<fieldtype name="my_text" class="solr.TextField">
       <analyzer type="Index">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
           <filter class="solr.ASCIIFoldingFilterFactory"/>
           <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="32" side="front"/>
       </analyzer>
       <analyzer type="query">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
           <filter class="solr.ASCIIFoldingFilterFactory"/>

       </analyzer>
</fieldtype>

答案 1 :(得分:0)

在这里回答,因为它是搜索“忽略口音”时弹出的第一个结果。

schema.xml(并使用haystackaldryn_searchdjangocms生成的djangocms-blog中,如果您添加<filter class="solr.ASCIIFoldingFilterFactory"/> fieldType中的text_en行。

Screenshot 1screenshot 2