Elasticsearch предоставляет поле оценки, если вы выполняете запрос на получение через cURL.
{
"_index": "twitter",
"_type": "tweet",
"_id": "123",
"_score": 4.2,
"firstName": "Max"
"lastName": "Mustermann"
}
Есть ли способ получить этот результат внутри symfony. Мне интересно, предоставляет ли FOSElasticaBundle функцию, аналогичную приведенной ниже, для получения оценки.
$finder = $this->container->get('fos_elastica.finder.app.article');
$boolQuery = new \Elastica\Query\BoolQuery();
$fieldQuery = new \Elastica\Query\Match();
$fieldQuery->setFieldQuery('title', 'I am a title string');
$fieldQuery->setFieldParam('title', 'analyzer', 'my_analyzer');
$boolQuery->addShould($fieldQuery);






При поиске с помощью FOSElasticaBundle вы получите Elastica\ResultSet с Elastica\Result внутри. Вы можете повторить эти результаты, у них есть метод getScore, чтобы получить то, что вам нужно.
$resultSet = $this->store->search($query);
$results = $resultSet->getResults();
foreach ($results as $result) {
$score = $result->getScore();
}
В качестве альтернативы вы можете получить оценку с помощью этого: $result->getParam('_score');
Если вы пытаетесь изменить это из класса, расширяющего FOS\ElasticaBundle\Repository, рассмотрите возможность использования $this->findHybrid(). Этот метод возвращает массив, содержащий объекты HybridResult. Каждый HybridResult, в свою очередь, содержит как преобразованный объект, так и данные результата (включая оценку).