我有一篇DB文章,我想搜索所有文章: 1.包含“RIO'在标题或摘录中 2.包含“巴西”这个词。在parent_post_content中 3.并在一定时间范围内
我用(结构化)搜索的查询是:
(and (phrase field=parent_post_content 'BRAZIL') (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (or (phrase field=title 'RIO') (phrase field=excerpt 'RIO')))
但出于某种原因,我得到的结果包含了“RIO'在标题中,但不包含'巴西'在parent_post_content中。
这特别奇怪,因为我试图仅使用此查询来限制标题(而不是摘录):
(and (phrase field=parent_post_content 'BRAZIL') (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (phrase field=name 'RIO'))
结果似乎没问题。
我是CloudSearch的新手,所以我很可能有语法错误,但我似乎无法找到它们。帮助
答案 0 :(得分:0)
您正在使用phrase
运算符,但实际上并未搜索短语;最好使用term
运算符(或无运算符)。我不明白为什么它应该重要但是使用除了打算如何使用之外的东西会引起意想不到的后果。
以下是我重新编写查询的方式:
使用 term (主要用于增强字段时使用):
(and (term field=parent_post_content 'BRAZIL') (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (or (term field=title 'RIO') (term field=excerpt 'RIO')))
没有操作员(我发现这个最简单):
(and parent_post_content:'BRAZIL' (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (or title:'RIO' excerpt:'RIO'))
如果失败,您可以发布完整的查询吗?我想检查一下,例如,您是否使用了结构化查询解析器,因为您之前提到过您是CloudSearch的新手。
以下是亚马逊的一些相关文档:
答案 1 :(得分:0)
显然问题不在于查询,而在于显示的内容。我愚蠢地相信CloudSearch网站上显示的内容已经完成,因此得出的结论是它不包含巴西。但是,这不是完整的内容,当我检查完整内容时,巴西就在那里。
抱歉这个foolery。