Elastica搜索添加第二个过滤器

时间:2013-03-05 17:19:30

标签: symfony elasticsearch elastica

我开始在我的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);

0 个答案:

没有答案