【问题标题】:Sorting in FOSElasticaBundle在 FOSElasticaBundle 中排序
【发布时间】:2014-03-17 00:04:42
【问题描述】:

我在我的项目中使用 FOSElasticaBundle 来搜索我的 Player 实体。由于我只想在值 1 上搜索属性为 isactive 的实体,因此我遵循了有关“过滤结果和执行默认查询”的文档:FriendsOfSymfony/FOSElasticaBundle/README.md

$query = new \Elastica\Query\QueryString($searchterm);
$term = new \Elastica\Filter\Term(array('isactive' => true));

$filteredQuery = new \Elastica\Query\Filtered($query, $term);
$players = $this->get('fos_elastica.finder.xxx.player')->find($filteredQuery);

我的包的配置如下:

fos_elastica:
clients:
    default: { host: localhost, port: 9200 }
serializer:
    callback_class: FOS\ElasticaBundle\Serializer\Callback
    serializer: serializer
indexes:
    xxx:
        client: default
        types:
            player:
                mappings:
                    firstname: { boost: 3 }
                    lastname: { boost: 3 }
                serializer:
                    groups: [elastica, Default]
                persistence:
                    driver: orm
                    model: xxx\FrontendBundle\Entity\Player
                    listener: ~
                    provider: ~
                    finder: ~

现在我想做一些排序并用限制和偏移量减少结果。我怎样才能做到这一点?

我找到了类似的解决方案

$finalQuery = new \Elastica\Query($boolQuery);
$finalQuery->setSort(array('price' => array('order' => 'asc')));

但我没有 Elastica\Query 对象,并且 AbstractQuery 不支持这种方法。与

相同
$elasticaQuery->addSort($sort);

怎么办?在哪里读?? ://

(此外,如果我们已经在这里:{boost: 3} 究竟做了什么?)

【问题讨论】:

标签: symfony elasticsearch foselasticabundle


【解决方案1】:

您必须创建一个通用的 Elastica\Query() 对象。 然后您可以使用 ->addSort($sort)

向此查询添加排序

稍后您可以使用 ->setQuery(); 分配适当的查询

你的例子应该是这样的

$query = new \Elastica\Query();
$query->addSort(array('price' => array('order' => 'asc')));

$q = new \Elastica\Query\QueryString($searchterm);
$term = new \Elastica\Filter\Term(array('isactive' => true));
$filteredQuery = new \Elastica\Query\Filtered($q, $term);

$query->setQuery($filteredQuery);
$players = $this->get('fos_elastica.finder.xxx.player')->find($query);

Boost 允许您在查询中使一个字段比其他字段更/不重要。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
相关资源
最近更新 更多