【问题标题】:Extend Endeca's diacritic folding mapping扩展 Endeca 的变音符号折叠映射
【发布时间】:2017-05-16 07:39:30
【问题描述】:

对于 ATG-Endeca 应用程序,我们有一个包含希腊语和英语混合数据的索引。索引的希腊语数据包含带重音的单词。如果搜索词没有重音,则它们与任何数据都不匹配(或者它们匹配是因为没有重音的字符与有重音的字符发生自动校正,这不是所需的功能)。 Dgidx 标志 --diacritic 折叠配置不包括希腊字符的映射 (https://docs.oracle.com/cd/E29584_01/webhelp/mdex_basicDev/src/rbdv_chars_mapping.html)。

是否可以通过 Endeca 端或核心或代码中的属性文件来扩展此 oob 功能?

【问题讨论】:

    标签: oracle diacritics endeca oracle-commerce


    【解决方案1】:

    在您提供的文档中指出:

    Dgidx 支持在索引期间将 Latin1、Latin extended-A 和 Windows CP1252 国际字符映射到它们的简单 ASCII 等效字符。

    这表明希腊语不受支持,因为它不属于任何这些字符集(我相信希腊语是 Latin-7)。也就是说,您可以尝试在记录级别设置语言标志(因为您指出您的数据包括英语和希腊语),假设每种语言都有自己的记录,或者尝试使用 dgidx 和 @987654322 实现全球语言@ 参数,但这会影响非全局语言的记录或属性的词干提取。

    dgidx --lang el
    dgraph --lang el
    

    虽然我不确定它是否会根据原始声明起作用。

    或者,您可以使用自定义Accessor 实现变音符号删除过程,它扩展了atg.repository.search.indexing.PropertyAccessorImpl 类(一个选项,因为您引用了Nucleus,所以我假设您使用的是ATG/Oracle Commerce)。使用它,您可以在索引中指定一个规范化的可搜索字段,该字段复制当前索引中的可搜索字段,但现在已删除所有变音符号。您在 Accessor 中应用的相同逻辑随后需要作为预处理器应用于您的搜索词,以便您规范化输入以匹配索引值。最后,使索引中的原始字段(带有重音字符)仅显示,规范化字段可搜索(但不显示它们)。

    结果将匹配您的规范化文本,但缺点是您有重复的数据,因此您的索引会更大。小数据集不是大问题。 OOTB 功能(如词干提取)与规范化数据集的行为方式也可能会受到影响。您必须使用希腊语和英语对各种场景进行一些测试,以查看准确率和召回率是否受到不利影响。

    【讨论】:

    • 嗨,Radimpe。感谢您的回答。希腊语 oob 是 OLT,但我们需要预先输入和通配符,因此我们使用 Latin-1。
    • 在这种情况下,对索引中的输入数据进行规范化,然后在将其传递给预先输入之前对其进行动态规范化可能会产生积极的结果。
    • 在预先输入的表单处理程序中,我们音译了任何变音符号,并向 ProductCatalogIndexingAdmin 添加了一项服务,以便对 Endeca 数据执行相同的操作。像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2014-06-20
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多