getResults() 공개 메소드

Returns all results.
public getResults ( ) : Result[]
리턴 Result[] Results
 /**
  * @param \Elastica\ResultSet $searchResult
  * @param array $requestParameters
  *
  * @return array
  */
 protected function formatSearchResult(ResultSet $searchResult, array $requestParameters)
 {
     $products = [];
     foreach ($searchResult->getResults() as $document) {
         $products[] = $document->getSource()[PageIndexMap::SEARCH_RESULT_DATA];
     }
     return $products;
 }
 /**
  * @param \Elastica\ResultSet $resultSet
  *
  * @return array
  */
 public function extractProductIdsFromResultSet(ResultSet $resultSet)
 {
     $abstractProductIds = [];
     foreach ($resultSet->getResults() as $result) {
         $product = $result->getSource();
         if (isset($product[PageIndexMap::SEARCH_RESULT_DATA]['id_product_abstract'])) {
             $abstractProductIds[] = $product[PageIndexMap::SEARCH_RESULT_DATA]['id_product_abstract'];
         }
     }
     return $abstractProductIds;
 }
 public function testPartialFailure()
 {
     $client = $this->_getClient();
     $index = $client->getIndex('elastica_partial_failure');
     $index->create(array('index' => array('number_of_shards' => 5, 'number_of_replicas' => 0)), true);
     $type = $index->getType('folks');
     $type->addDocument(new Document('', array('name' => 'ruflin')));
     $type->addDocument(new Document('', array('name' => 'bobrik')));
     $type->addDocument(new Document('', array('name' => 'kimchy')));
     $index->refresh();
     $query = Query::create(array('query' => array('filtered' => array('filter' => array('script' => array('script' => 'doc["undefined"] > 8'))))));
     try {
         $index->search($query);
         $this->fail('PartialShardFailureException should have been thrown');
     } catch (PartialShardFailureException $e) {
         $resultSet = new ResultSet($e->getResponse(), $query);
         $this->assertEquals(0, count($resultSet->getResults()));
     }
 }
예제 #4
0
 /**
  * Turn the elasticsearch results into a collection of models.
  *
  * @param ResultSet $resultSet
  * @return Collection
  */
 protected function resultsToModels(ResultSet $resultSet)
 {
     $results = $resultSet->getResults();
     if (!empty($results)) {
         $groupedResults = $this->groupResultsByType($results);
         $modelResults = $this->getModelsFromGroupedResults($groupedResults);
         $collection = $this->newCollection($modelResults);
         return $collection;
         // return $collection->sortByDesc(function ($model) {
         //     return $model->score;
         // });
     }
     return $this->newCollection([]);
 }
예제 #5
0
 /**
  * Get a list of the models for the result set
  *
  * @param ResultSet $resultSet
  * @return array
  */
 public function getModels(ResultSet $resultSet)
 {
     // Loop through the search hits and return Eloquent models for them
     $items = [];
     $hits = $resultSet->getResults();
     foreach ($hits as $hit) {
         $itemArray = $hit->getSource();
         $item = new Item();
         $item->id = intval($hit->getId());
         if (array_key_exists('url', $itemArray)) {
             $item->itemable = new Link();
             $item->itemable->url = $itemArray['url'];
             $item->itemable->photo = $itemArray['photo'];
         } else {
             $item->itemable = new Note();
         }
         $item->value = $itemArray['value'];
         $item->description = $itemArray['description'];
         $tagsArray = json_decode($itemArray['tags'], true);
         $item->tags = [];
         if ($tagsArray) {
             $tagsObjArray = [];
             foreach ($tagsArray as $tag) {
                 $tagObj = new Tag();
                 $tagObj->name = $tag;
                 $tagsObjArray[] = $tagObj;
             }
             $item->tags = $tagsObjArray;
         }
         $item->user_id = $itemArray['user_id'];
         $item->user = new User();
         $item->user->id = $itemArray['user_id'];
         $item->user->user_photo = $itemArray['user_photo'];
         $items[] = $item;
     }
     return $items;
 }
 /**
  * @param ResultSet $result
  */
 protected function collectHits(ResultSet $result)
 {
     $data = $result->getResults();
     foreach ($data as $item) {
         $content = array();
         $content['_source'] = $item->getData();
         $highlights = $item->getHighlights();
         if (!empty($highlights)) {
             $content['highlight'] = $highlights;
         }
         $this->hits[] = $content;
     }
 }
예제 #7
0
 /**
  * Prepares query response.
  *
  * @param \Elastica\ResultSet $response
  * @return array
  */
 protected function _prepareQueryResponse($response)
 {
     /* @var $response \Elastica\ResultSet */
     if (!$response instanceof \Elastica\ResultSet || $response->getResponse()->hasError() || !$response->count()) {
         return array();
     }
     $this->_lastNumFound = (int) $response->getTotalHits();
     $result = array();
     foreach ($response->getResults() as $doc) {
         $result[] = $this->_toArray($doc->getSource());
     }
     return $result;
 }
예제 #8
0
 protected function buildInsertQuery(\Elastica\ResultSet $resultSet, $queryId)
 {
     $writeAdapter = $this->_getWriteAdapter();
     $query = 'INSERT';
     $query = sprintf('%s INTO %s', $query, $writeAdapter->quoteIdentifier($this->getTable('catalogsearch/result')));
     $fields = ['query_id', 'product_id', 'relevance'];
     $columns = array_map(array($writeAdapter, 'quoteIdentifier'), $fields);
     $columns = implode(',', $columns);
     $query .= ' (' . $columns . ')';
     $query .= ' VALUES';
     $valueRows = [];
     foreach ($resultSet->getResults() as $result) {
         $productId = $result->getData()['entity_id'][0];
         $values = [(int) $queryId, (int) $productId, (double) $result->getScore()];
         $valueRows[] = '(' . implode(', ', $values) . ')';
     }
     $query .= ' ' . implode(', ', $valueRows);
     $update = array();
     foreach ($fields as $field) {
         $update[] = sprintf('%1$s = VALUES(%1$s)', $writeAdapter->quoteIdentifier($field));
     }
     if ($update) {
         $query = sprintf('%s ON DUPLICATE KEY UPDATE %s', $query, join(', ', $update));
     }
     return $query;
 }