【问题标题】:Amazon CloudSearch accented wordsAmazon CloudSearch 重音词
【发布时间】:2019-09-21 22:42:57
【问题描述】:

我有一个带有重音词的文档的索引。

例如这个葡萄牙语文档:

title => 'Ponte metálica'

如果我搜索“metálica”它匹配,所以没问题。 但通常人们搜索时不带重音符号,因此通常只搜索“metalica”(注意没有重音符号“á”的“a”)。

但它没有返回任何结果。我在 AWS 控制台中并通过端点 /search 对其进行了测试。我使用的是 2013 API。

我认为同义词不能解决这个问题,因为它们不是完整的单词

【问题讨论】:

    标签: amazon-web-services search full-text-search amazon-cloudsearch


    【解决方案1】:

    您在AWS forums 中发布了相同的问题并得到了回复:

    CloudSearch 葡萄牙语词干分析器不会删除重音符号,因此 á 不会匹配 a,并且它目前没有删除它们的选项。

    我能想到的两种解决方法:

    1. 在上传之前删除重音符号。 (可能到不同的领域)
    2. 使用复制字段和“多种语言”分析模式。不幸的是,这不会按照葡萄牙语规则来阻止单词,但它确实会消除重音!

    我喜欢在上传之前删除重音的想法,但我还有另外两个想法:

    1. 使用fuzzy matching,这样您就可以容忍一个或两个“错误”字符。可能需要考虑性能缺陷。

    2. 提供类似于“您的意思是?”的auto-complete/suggestor solution经验类型。

    我在 2014 年左右发现了这个 Stack Overflow 线程,它讨论了这两种可能性,仍然使用 CloudSearch:Implementing "Did you mean?" using Amazon CloudSearch

    关于模糊匹配算子:

    您还可以使用简单的查询解析器执行模糊搜索。要执行模糊搜索,请附加 ~ 运算符和一个值,该值指示多少项可以与用户查询字符串不同并且仍被视为匹配项。例如,指定 planit~1 搜索术语 planit 并允许匹配最多相差一个字符,这意味着结果将包括行星的匹配项。

    关于自动完成,带有模糊匹配选项:

    当您请求建议时,Amazon CloudSearch 会查找在建议者字段中的值以指定查询字符串开头的所有文档 - 字段的开头必须与查询字符串匹配才能被视为匹配项。返回数据包括每个匹配项的字段值和文档 ID。您可以配置建议器以查找精确查询字符串的匹配项,或执行近似字符串匹配(模糊匹配)以纠正印刷错误和拼写错误。

    【讨论】:

    • 我们已经在我们的搜索中使用通配符 (*) 自动完成(他们的建议对我们的用例不太适用)。我在 AWS 论坛上回复,他们没有解决方案,但我找到了一种不去除口音的方法(认为这是一个蹩脚的黑客):forums.aws.amazon.com/thread.jspa?threadID=310521&tstart=0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多