0
if(count($priceRange)){
    $facets = new \Elastica\Facet\Range('price');
    $facets->setField('price');

    foreach ($min as $key => $value) {
        $facets->addRange(intval($min[$key])*100, intval($max[$key])*100);
    }

    $facets->setGlobal(false);
    $query->addFacet($facets);
}

これは私にはうまくいきません.2つの方法で検索しようとしています.

このような:

$client = $this->container->get('fos_elastica.client')
$searcher = new \Elastica\Search($client)
$esResultSet = $searcher->search($query , 500)
$arrayOfResults = $esResultSet->getResults()
$facets = $esResultSet->getFacets()

または、このように

$resultSet = $finder->find($query, 500)

これはどちらも機能しません。ファセット範囲が機能しないのはなぜですか?

4

1 に答える 1

0

より多くのコードは次のとおりです。

 $boolQuery = new \Elastica\Query\Bool();
    $fieldText = new \Elastica\Query\Text();
    $fieldText->setFieldQuery('name', $keyword);
    $fieldText->setFieldParam('name', 'analyzer', 'my_analyzer');
    $boolQuery->addMust($fieldText);

    $fieldText = new \Elastica\Query\Text();
    $fieldText->setFieldQuery('description', $keyword);
    $fieldText->setFieldParam('description', 'analyzer', 'my_analyzer');
    $boolQuery->addShould($fieldText);

    $fieldTerms = new \Elastica\Query\Terms();
    $fieldTerms->setTerms('country_id', $countryArray);
    $boolQuery->addMust($fieldTerms);

    $fieldTerms = new \Elastica\Query\Terms();
    $fieldTerms->setTerms('taxon_ids', $themeArray);
    $boolQuery->addMust($fieldTerms);

    $query->setSort(array("price" => array("order" => "asc")));
于 2013-09-10T09:07:10.230 に答える