我有一个带有重音单词的文档索引。
例如,此文档使用葡萄牙语:
title => 'Ponte metálica'
如果我搜索“ metálica”,则表示匹配,因此没有问题。 但是通常人们搜索时都没有重音,因此仅搜索“ metalica ”(注意没有重音“á”的“ a”)是很常见的。
但是它没有返回任何结果。我在AWS控制台中通过端点/ search对其进行了测试。我正在使用2013 API。
我认为同义词不能完整解决这个问题
答案 0 :(得分:1)
您似乎在AWS forums中发布了相同的问题并得到了回复:
CloudSearch葡萄牙语词干分析器不会删除重音符号,因此á将不匹配重音符号,并且它目前没有删除这些重音符号的选项。
我能想到的两种解决方法:
- 在上载之前删除重音符号。 (可能是其他字段)
- 使用复制字段和“多种语言”分析模式。不幸的是,这不会阻止葡萄牙语的字眼,但确实会删除重音!
我喜欢在上传之前删除重音符号的想法,但是我还有另外两个想法:
使用fuzzy matching,以便可以容忍一个或两个“错误”字符。可能有性能上的缺点要考虑。
提供一个auto-complete/suggestor solution,类似于“您的意思是?”。体验类型。
我发现2014年左右的这个Stack Overflow线程讨论了这两种可能性,仍然使用CloudSearch:Implementing "Did you mean?" using Amazon CloudSearch
关于模糊匹配算子:
您还可以使用简单的查询解析器执行模糊搜索。要执行模糊搜索,请附加〜运算符和一个值,该值指示与用户查询字符串可以相差多少且仍被视为匹配项。例如,指定
planit~1
会搜索“ planit”一词,并允许匹配项最多相差一个字符,这意味着结果将包括行星的匹配。
关于自动完成,带有模糊匹配选项:
当您请求建议时,Amazon CloudSearch会找到所有其建议者字段中的值以指定查询字符串开头的文档-该字段的开头必须与查询字符串匹配才能被视为匹配项。返回数据包括每个匹配项的字段值和文档ID。您可以配置建议程序以查找与确切查询字符串匹配的内容,或执行近似字符串匹配(模糊匹配)以纠正印刷错误和拼写错误。