/** * Extracts search result from $data returned by Elasticsearch. * * @param mixed $data * * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult */ public function extract($data) { $result = new SearchResult(array("time" => $data->took, "maxScore" => $data->hits->max_score, "totalCount" => $data->hits->total)); if (isset($data->aggregations)) { foreach ($data->aggregations as $name => $aggregationData) { $result->facets[] = $this->facetBuilderVisitor->map($name, $aggregationData); } } foreach ($data->hits->hits as $hit) { $searchHit = new SearchHit(array("score" => $hit->_score, "valueObject" => $this->extractHit($hit))); $result->searchHits[] = $searchHit; } return $result; }
/** * Extracts search result from $data returned by Solr backend. * * @param mixed $data * * @return \eZ\Publish\API\Repository\Values\Content\Search\SearchResult */ public function extract($data) { $result = new SearchResult(array('time' => $data->responseHeader->QTime / 1000, 'maxScore' => $data->response->maxScore, 'totalCount' => $data->response->numFound)); if (isset($data->facet_counts)) { foreach ($data->facet_counts->facet_fields as $field => $facet) { $result->facets[] = $this->facetBuilderVisitor->map($field, $facet); } } foreach ($data->response->docs as $doc) { $searchHit = new SearchHit(array('score' => $doc->score, 'index' => $this->getIndexIdentifier($doc), 'contentTranslation' => $this->getMatchedLanguageCode($doc), 'valueObject' => $this->extractHit($doc))); $result->searchHits[] = $searchHit; } return $result; }