Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Cloudsearch边界框过滤器_Php_Amazon Cloudsearch - Fatal编程技术网

Php Cloudsearch边界框过滤器

Php Cloudsearch边界框过滤器,php,amazon-cloudsearch,Php,Amazon Cloudsearch,我有以下CloudSearch查询 $query = array( 'query' => '(and expiry:[' . $time . ',} updatetime:[100,} type:\'all\')', 'queryParser' => 'structured', 'queryOptions' => '{"defaultOperator":"and"}', 'sort' => 'distance asc', 'return'=>'_all_fields

我有以下CloudSearch查询

$query = array(
'query' => '(and expiry:[' . $time . ',} updatetime:[100,} type:\'all\')',
'queryParser' => 'structured',
'queryOptions' => '{"defaultOperator":"and"}',
'sort' => 'distance asc',
'return'=>'_all_fields,_score,distance',
'size' => 5000,
'expr'=> '{"distance":"haversin(' . $lat . ',' . $lon . ',location.latitude,location.longitude)"}',
'start'=>$start,
'fq'=>'location:[\'35.628611,-120.694152\',\'35.621966,-120.686706\']'

);

除了FQ部分外,查询也可以工作,其目的是FQ将结果限制在边界框区域内。但是,尽管有它,它并没有限制结果。远远超出该区域的结果正在返回,我需要做什么来更改它以使其正常工作?

我有解决此问题的方法

虽然aws文档在示例中将其称为fq,但实际上它是filterQuery

还请注意,位置点顺序为左上角、右下角

$query = array(
'query' => '(and expiry:[' . $time . ',} updatetime:[100,} type:\'all\')',
'queryParser' => 'structured',
'queryOptions' => '{"defaultOperator":"and"}',
'sort' => 'distance asc',
'return'=>'_all_fields,_score,distance',
'size' => 5000,
'expr'=> '{"distance":"haversin(' . $lat . ',' . $lon .          ',location.latitude,location.longitude)"}',
'start'=>$start,
'filterQuery'=>'location:[\'35.628611,-120.694152\',\'35.621966,-120.686706\']'

 );

您是否有最终从查询创建的实际GET请求URL?我很想看看它包含什么样的位置fq。我不确定我能不能给你,我正在使用AWS的官方PHP api,所以它都被捆绑到api发出的调用中,我会跟踪api,看看我是否能找到并记录对Amazoni的调用如果你无法通过日志获得它,您还可以使用Charles()之类的工具来记录流量。我通过guzzle跟踪了调用,并在guzzle发送函数中记录了发送的请求,我发现fq不存在。它在原始查询中,但在发送调用中,它不在那里。我不知道为什么会这样?太好了,这会缩小范围。我会设置一些不同的、更简单的fq值;它们中的任何一个有效吗?或者库中的fq完全损坏了吗?还有一件事需要检查:您是否使用最新的API版本(2013)?fq参数是旧的(2011)API中不存在的