Amazon CloudSearch将长字符串与域文档进行匹配

时间:2015-07-28 06:34:03

标签: amazon-web-services amazon-cloudsearch

我正在实施亚马逊的Cloud Search API,并想知道它对“模糊”查询的效果如何。

我们基本上有包含说明的记录。我们希望根据该描述的内容找到匹配项。例如,我们的域数据集具有以下字符串(其中每个字符串是不同的文档):

“今天阳光灿烂”

“今晚月亮在天空中闪耀”

“今天下雨了”

如果我要向服务器提交说明,请执行以下操作:

"The sun and moon are shining bright lately" 

是否有一种搜索方法会返回前两个元素的匹配(尽管得分较低)?关键词很重要,忽略了“the”和“is”类型的词。如果是这样,该搜索是如何构建的?

1 个答案:

答案 0 :(得分:1)

我最终能够通过基于&#34的查询返回这些字符串;太阳和月亮最近闪耀着光芒"。我通过布尔或者将这些术语组合在一起完成了这个:

(or name:'sun' name:'moon' name:'shining' name:'bright' name:'lately')

我也删除了停用词,但我认为你不需要。

它绝对不漂亮。我使用其他方法遇到的问题是,CloudSearch似乎非常苛刻地处理了不会在查询中包含单词的结果,因此查询中的lately这样的单词会导致它与任何单词不匹配测试字符串。我希望用rank expression修复此问题,但我认为您只能对结果进行排名,而不是与您的查询不匹配的文档。

我也玩过sloppy phrase search,但仍然需要找到彼此相距一定距离的单词,在这种情况下,某些单词根本找不到。

我能想到的另一件事就是查看lucene和dismax查询解析器。他们不会改变底层搜索引擎,但他们可能会给你一种不同的方法来指定一个更好的查询。