使用 PHP API 的 AWS Amazon Cloud Search 表达式定义

问题描述

我在通过官方 AWS Cloud Search API 进行表达式定义时遇到了一些问题。

文档中的代码示例被破坏,实际上并未显示 API 实际期望的内容

https://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.CloudSearchDomain.CloudSearchDomainClient.html#_search

解决方法

经过多次试验,我找到了通过 PHP API 定义表达式的正确格式。

希望这可以为其他人节省一些时间。

因此,用于表达式编写的通用 AWS Cloud Search 文档将显示如下内容:

expr.score_by_date=_score*(_time - publish_date)

然后您在这样的搜索中使用:

search?q=terminator& expr.score_by_date=_score*(_time - publish_date)&sort=score_by_date desc

但在 API 中,您需要将其定义为传递给 CloudSearchDomainClient 类中的搜索方法的参数。

$search_args 是搜索方法接受的各种参数的数组。

$search_args['expr'] = '{score_by_date: "_score*(_time - post_date)"}';

然后修改排序参数以匹配如下:

$search_args['sort'] = 'score_by_date desc';