【问题标题】:Remove diacritics at index time into Solr将索引时的变音符号删除到 Solr
【发布时间】:2014-10-31 01:32:34
【问题描述】:

我正在对 Solr 搜索进行微调。我正在使用 Solr 4.0。

通常,我使用语言分析器和标记器来处理英语,但是这次我使用的是葡萄牙语,我遇到了问题,因为它并没有真正给出我需要的预期结果。

例如:我正在搜索单词“proteses”,但索引的是带有变音符号的“proteses”。所以它给出了错误的结果!

我需要做的是在索引和搜索之前删除所有变音符号,以便提供正确的结果。但是,我无法找到如何处理这部分。

谁能指出我正确的方向?

【问题讨论】:

  • 您尝试过我们提供的答案之一吗?您能否评论一下您是否解决了它以及如何解决?并最终接受答案?

标签: search solr full-text-search solr4


【解决方案1】:

您必须对可能包含变音符号的字段使用字符映射过滤器。此过滤器会将它们标准化。

例如:

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

Solr 自带的 mapping-ISOLatin1Accent.txt 有很多变音符号的映射。

显然,您必须在配置此过滤器后重新索引您的文档。

【讨论】:

    【解决方案2】:

    Solr 也有几个可用的 ICU 过滤器,并且有一个 NormalizationFolding 过滤器可用于删除 Unicode 中的重音符号和变音符号。

    还有一个ASCIIFoldingFilter 可用,它将尝试将标准 7 位 ASCII 范围以上的任何字符向下转换到该范围内。

    【讨论】:

    • 嗨,我真的不明白。你能补充一些细节吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2019-03-03
    • 2011-03-10
    • 2020-11-03
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多