我开始在我的Symfony应用程序中使用Elastica,但我不得不添加一个过滤器。 以下代码运行良好,它按名称,slug,agglomeration搜索,然后添加geoloc过滤器。我想添加一个“专业”过滤器,以删除与该过滤器不对应的所有结果/具有该特性,但我不知道该怎么做。
$nameQuery = new \Elastica_Query_Text();
$nameQuery->setFieldQuery('name', $name);
$slugQuery = new \Elastica_Query_Text();
$slugQuery->setFieldQuery('slug', $name);
$agglomerationQuery = new \Elastica_Query_Text();
$agglomerationQuery->setFieldQuery('agglomeration', $agglomeration);
$boolQuery = new \Elastica_Query_Bool();
$boolQuery->addShould($nameQuery);
$boolQuery->addShould($slugQuery);
$boolQuery->addShould($agglomerationQuery);
//todo add filter by speciality
if($latitude != null) {
$geoFilter = new \Elastica_Filter_GeoDistance('location', $latitude, $longitude, '3km');
$boolQuery = new \Elastica_Query_Filtered($boolQuery, $geoFilter);
}
return $this->find($boolQuery);