我在我的项目中使用 FOSElasticaBundle 来搜索我的Player
实体。由于我只想搜索具有属性isactive
值的实体,因此1
我遵循了有关“过滤结果和执行默认查询”的文档: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} 到底做了什么?)