1

我正在我的 Symfony 2.3 项目中集成 FOSElasticaBundle,我需要按其价格属性对结果进行排序。

这是我的代码:

   $finder     = $this->container->get('fos_elastica.finder.website.product');
   $fieldTerms = new \Elastica\Query\Terms();
   $fieldTerms->setTerms('taxon_ids', $taxon_ids_array);
   $boolQuery->addMust($fieldTerms);

   $resultSet = $finder->find($boolQuery);

我怎么能做到这一点?

谢谢

4

1 回答 1

5

尝试创建一个\Elastica\Query还包含排序信息的对象,然后将其发送给查找器:

$finder = $this->container->get('fos_elastica.finder.website.product');

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

$finalQuery = new \Elastica\Query($boolQuery);

$finalQuery->setSort(array('price' => array('order' => 'asc')));

$resultSet = $finder->find($finalQuery);

查看sort 参数上的 elasticsearch 文档,了解如何正确使用它。

注意:\Elastica\Query与 完全不同\Elastica\Query\AbstractQuery,第一个封装了您可以发送到_searchAPI 端点的所有内容(构面、排序、解释等),它AbstractQuery表示每个查询类型(范围、模糊、术语等)的基本类型...)。

于 2013-07-05T17:24:35.173 回答