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