gpt4 book ai didi

search - Solr 重音去除

转载 作者:行者123 更新时间:2023-12-05 08:59:11 25 4
gpt4 key购买 nike

我已经阅读了各种关于如何在索引/查询期间删除重音的主题。我想出的当前字段类型如下所示:

<fieldType name="text_general" class="solr.TextField">     
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>

在将一些测试信息添加到索引后,我通过 http://localhost:8080/solr/test_core/admin/luke?fl=title

检查了

生成了哪种 token 。例如,像“Bayern München”这样的标题已被标记化为:

<int name="bayern">1</int>
<int name="m">1</int>
<int name="nchen">1</int>

因此,不是用它的 ascii 吊坠替换字符,而是将其解释为定界符?!有了那种索引结果,我既不能搜索“münchen”也不能搜索 m?nchen。

知道如何解决吗?提前致谢。

最佳答案

问题是您正在申请 StandardTokenizerFactory在应用 ASCIIFoldingFilterFactory 之前.相反,您应该使用 MappingCharFilterFactory字符过滤器工厂第一和StandardTokenizerFactory .

根据 Solr Reference guide StandardTokenizerFactory支持<ALPHANUM>, <NUM>, <SOUTHEAST_ASIAN>, <IDEOGRAPHIC>, and <HIRAGANA> .因此,当您使用 StandardTokenizerFactory 进行标记化时变音字符丢失了,你的 ASCIIFoldingFilterFactory之后就没有用了。

你的 fieldType如果你想去 StandardTokenizerFactory 应该像下面这样.

<fieldType name="text_general" class="solr.TextField">     
<analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>

mapping-ISOLatin1Accent.txt应该有这种“特殊”字符的映射。在 Solr 中,默认情况下会预先填充此文件。例如ü -> ue , ä -> ae

关于search - Solr 重音去除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17162163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com