* @license http://github.com/basdenooijer/solarium/raw/master/COPYING * @link http://www.solarium-project.org/ * * @package Solarium * @subpackage Client */ /** * Parse Suggester response data * * @package Solarium * @subpackage Client */ class Solarium_Client_ResponseParser_Suggester extends Solarium_Client_ResponseParser { /** * Get result data for the response * * @param Solarium_Result_Terms $result * @return array */ public function parse($result) { $data = $result->getData(); $query = $result->getQuery(); $status = null; $queryTime = null; if (isset($data['responseHeader'])) { $status = $data['responseHeader']['status']; $queryTime = $data['responseHeader']['QTime']; } $suggestions = array(); $collation = null; if (isset($data['spellcheck']['suggestions']) && is_array($data['spellcheck']['suggestions'])) { $suggestResults = $data['spellcheck']['suggestions']; $termClass = $query->getOption('termclass'); for ($i = 0; $i < count($suggestResults); $i += 2) { $term = $suggestResults[$i]; $termData = $suggestResults[$i+1]; if ($term == 'collation'&& $i == count($suggestResults)-2) { $collation = $termData; } else { $suggestions[$term] = new $termClass( $termData['numFound'], $termData['startOffset'], $termData['endOffset'], $termData['suggestion'] ); } } } return array( 'status' => $status, 'queryTime' => $queryTime, 'results' => $suggestions, 'collation' => $collation, ); } }