【问题标题】:Amazon CloudSearch returns false resultsAmazon CloudSearch 返回错误结果
【发布时间】:2017-02-16 06:25:54
【问题描述】:

我有一个文章数据库,我想搜索以下所有文章: 1. 在标题或摘录中包含“RIO”一词 2. 在 parent_post_content 中包含单词 'BRAZIL' 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 中包含“BRAZIL”。

这特别奇怪,因为我尝试使用此查询仅以标题(而不是摘录)为条件: (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 的新手,所以我很可能有语法错误,但我似乎找不到它们。帮忙?

【问题讨论】:

    标签: amazon-cloudsearch text-search


    【解决方案1】:

    您正在使用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 的新手。

    以下是来自 Amazon 的一些相关文档:

    【讨论】:

    • 显然问题不在于查询,而在于显示的内容。我愚蠢地相信 CloudSearch 站点中显示的内容是完整的,因此得出结论认为它不包含巴西。但很可惜,这不是完整的内容,当我查看完整的内容时,巴西就在那里。感谢您的帮助!
    【解决方案2】:

    显然问题不在于查询,而在于显示的内容。我愚蠢地相信 CloudSearch 站点中显示的内容是完整的,因此得出结论认为它不包含巴西。但是很遗憾,这不是完整的内容,当我查看完整的内容时,巴西就在那里。

    为我的愚蠢感到抱歉。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多