AWS Cloudsearch 电子邮件查询

AWS Cloudsearch email query

我通过电子邮件遇到了 CloudSearch 问题

例如,我的搜索查询是host/search?predicate=aleks@email.com

我已将字符串 ${predicate}* | ${predicate} 定义为我的查询,并且我一直在尝试在电子邮件字段中进行搜索。结果,只有在我一直尝试查询“@”符号(alex)或完整请求(alex@email.com)之前的任何一部分时,我才会得到响应。

我研究了CloudSearch limits,但最后没弄明白:是否可以传递带有“@”符号的字符串?有人解决了这个问题吗?

谓词字段是text还是literal?。看起来它现在是文本,所以 cloudsearch 提取了电子邮件,这就是为什么它将被提取并存储为 aleks email com,因此 aleksemail 在您搜索时有效。您可以将电子邮件字段设置为 literal 类型,这样 cloudsearch 就不会在这种情况下查询将适用于 ale*alek*,因此您可以使用 ${predicate}* | ${predicate}

注意:literal 将进行区分大小写的搜索,因此如果您想要不区分大小写的搜索,您可能必须在发送到 cloudsearch 之前将值小写

http://docs.aws.amazon.com/cloudsearch/latest/developerguide/text-processing.html @ 是会中断字符串部分的字符之一。因此,您需要将 @ 替换为其他内容。
对于英文分词规则,您需要禁用词干提取。