AWS Cloudsearch提供了一种称为“结构化查询”的功能,可以在执行搜索时使用非常有用的高级查询,而不仅仅是通过单个关键词进行匹配。结构化查询使用一些特殊的操作符和格式,以及具有特定字段和属性的查询参数,因而需要使用结构化查询解析器。
以下是使用AWS SDK for PHP进行AWS Cloudsearch结构化查询的示例代码:
$params = array(
'queryParser' => 'structured',
'size' => 10,
'q' => '(and (prefix field=my_field "foo") (range field=my_num_field [1,10]))'
);
其中,queryParser
参数用于指示使用结构化查询。size
参数为返回结果的最大数量。q
参数是实际的结构化查询,包含了一个and
操作符,以及一个prefix
查询和一个range
查询。这些查询操作符可以与其他操作符一起使用,以构建更复杂的查询语句。
要使用结构化查询解析器,需要创建一个架构并定义要使用的索引字段和查询字段。然后,在使用结构化查询时,可以使用这些字段和属性。例如,下面的示例代码创建了一个名为my_index
的索引,并定义了一个文本字段my_field
和一个数字字段my_num_field
:
{
"name": "my_index",
"type": "add",
"fields": [{
"name": "my_field",
"type": "text",
"analysisScheme": "my_analysis_scheme"
},
{
"name": "my_num_field",
"type": "int",
"searchEnabled": true,
"facetEnabled": true
}
],
"fieldMappings": {
"my_field": {
"indexFieldName": "my_field_text",
"searchEnabled": true,
"facetEnabled": false
},
"my_num_field": {