1

我开始在我的 Symfony 应用程序中使用 Elastica,但我坚持要添加一个过滤器。以下代码运行良好,它按名称、段塞、聚集进行搜索,然后添加 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);
4

0 回答 0