我使用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>
请帮助解决此问题。
答案 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
(并使用haystack
,aldryn_search
和djangocms
生成的djangocms-blog
中,如果您添加<filter class="solr.ASCIIFoldingFilterFactory"/>
fieldType中的text_en
行。