hum*_*pdi 3 symfony elasticsearch foselasticabundle
我在我的项目中使用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);
Run Code Online (Sandbox Code Playgroud)
我的包的配置如下所示:
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: ~
Run Code Online (Sandbox Code Playgroud)
现在我想做一些排序并用限制和偏移量削减结果.我怎样才能实现这一目标?
我发现了一个像这样的解
$finalQuery = new \Elastica\Query($boolQuery);
$finalQuery->setSort(array('price' => array('order' => 'asc')));
Run Code Online (Sandbox Code Playgroud)
但是我没有Elastica\Query对象,而AbstractQuery也不支持这种方法.与...相同
$elasticaQuery->addSort($sort);
Run Code Online (Sandbox Code Playgroud)
该怎么办?哪里读?://
(另外,如果我们已经在这里:{boost:3}究竟做了什么?)
bra*_*tek 10
您必须创建一个通用的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);
Run Code Online (Sandbox Code Playgroud)
Boost允许您在查询中使一个字段比其他字段更重要.
| 归档时间: |
|
| 查看次数: |
7058 次 |
| 最近记录: |