对于ATG-Endeca应用程序,我们有一个包含混合希腊语和英语数据的索引。带索引的希腊语数据包含带重音的单词。如果搜索词没有重音,则它们不会与任何数据匹配(或者,由于没有重音的字符与有重音的字符发生自动校正,所以它们不匹配,这不是所需的功能)。Dgidx标志--变音折叠配置不包括希腊语字符的映射(https://docs.oracle.com/cd/E29584_01/webhelp/mdex_basicDev/src/rbdv_chars_mapping.html)。
是否有可能通过Endeca side或nucleous或代码中的属性文件来扩展此oob功能?
发布于 2017-05-16 16:58:52
在您提供的文档中,它说明:
Windows支持在索引过程中将Latin1、拉丁扩展-A和
CP1252国际字符映射到其简单的ASCII值。
这表明不支持希腊语,因为它不属于这些字符集(我相信希腊语是拉丁语-7)。也就是说,您可以尝试在记录级别设置语言标志(因为您指出您的数据包括英语和希腊语),假设每种语言都有自己的记录,或者尝试使用dgidx和dgraph参数实现一种全局语言,但这会影响不是全局语言的记录或属性的词干处理。
dgidx --lang el
dgraph --lang el虽然我不确定它是否会基于最初的声明工作。
或者,您可以使用自定义Accessor实现一个删除变音符号的过程,该过程扩展了atg.repository.search.indexing.PropertyAccessorImpl类(由于您引用的是Nucleus,所以我假设您使用的是ATG/Oracle Commerce)。使用它,您可以在索引中指定一个规范化的可搜索字段,该字段复制当前索引中的可搜索字段,但现在删除了所有变音符号。然后,需要将您在Accessor中应用的相同逻辑作为搜索词的预处理器,以便您标准化输入以匹配索引值。最后,将索引中的原始字段(带有突出显示的字符)设置为仅供显示,将规范化的字段设置为可搜索(但不显示它们)。
结果将匹配您的标准化文本,但缺点是您有重复的数据,因此您的索引将更大。对于小数据集来说,这不是一个大问题。也可能会影响OOTB功能,如词干分析,如何使用规范化的数据集。您必须对希腊语和英语中的各种场景进行一些测试,以查看精确度和召回率是否受到不利影响。
https://stackoverflow.com/questions/43995241
复制相似问题