我需要向查询中添加functionScore来定义结果的特定相关性。
下面是我的工作代码:
$query = new BoolQuery();
$filters = new BoolFilter();
$query = new Query\Term();
$query->setTerm($field, $value);
$query->addMust($query);
$query = new Query\Filtered($query, $filters);
$finalQuery = new Query($query);
$finalQuery->addSort(array('maxCapacity' => array('order' => 'asc')));
$type->search($finalQuery, array('from' => (int)$from, 'size' => (int)$limit));
我需要在查询中添加类似下面这样的内容,但我不知道该怎么做:
$script = new Script("doc['pricehour'].value * 0.2 + doc['priceDay'].value * 0.4");
$score = new \Elastica\Query\FunctionScore();
$score->addScriptScoreFunction($script);
我走的方向对吗?
P.S.由于我使用了排序,结果集中的My _score为空,有什么想法可以用FosElasticaBundle重新激活它吗?
1条答案
按热度按时间4dc9hkyq1#
Solution moved来自@GregOs的问题帖子。
我终于找到了解决办法。在Elastica中的一切都是关于 Package 查询。
现在我可以执行如下FunctionScore查询: