如何在Solr中忽略重音搜索

pav*_*mar 4 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>
Run Code Online (Sandbox Code Playgroud)

请帮忙解决这个问题.

sou*_*eck 9

如果您使用的是solr> 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>
Run Code Online (Sandbox Code Playgroud)