Commit 61274f1f authored by Bas de Nooijer's avatar Bas de Nooijer

Fix for issue #169

parent d25e1b73
...@@ -65,8 +65,14 @@ class ResponseParser extends ResponseParserAbstract implements ResponseParserInt ...@@ -65,8 +65,14 @@ class ResponseParser extends ResponseParserAbstract implements ResponseParserInt
*/ */
$query = $result->getQuery(); $query = $result->getQuery();
// Special case to handle Solr 1.4 data
if(isset($data['terms']) && count($data['terms']) == count($query->getFields()) * 2) {
$data['terms'] = $this->convertToKeyValueArray($data['terms']);
}
foreach ($query->getFields() as $field) { foreach ($query->getFields() as $field) {
$field = trim($field); $field = trim($field);
if (isset($data['terms'][$field])) { if (isset($data['terms'][$field])) {
$terms = $data['terms'][$field]; $terms = $data['terms'][$field];
if ($query->getResponseWriter() == $query::WT_JSON) { if ($query->getResponseWriter() == $query::WT_JSON) {
......
...@@ -88,4 +88,58 @@ class ResponseParserTest extends \PHPUnit_Framework_TestCase ...@@ -88,4 +88,58 @@ class ResponseParserTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(2, count($result['results'])); $this->assertEquals(2, count($result['results']));
} }
public function testParseSolr14Format()
{
$data = array(
'responseHeader' => array(
'status' => 1,
'QTime' => 13,
),
'terms' => array(
'fieldA',
array(
'term1',
5,
'term2',
3
),
'fieldB',
array(
'term3',
6,
'term4',
2
)
),
);
$query = new Query();
$query->setFields('fieldA, fieldB');
$resultStub = $this->getMock('Solarium\QueryType\Terms\Result', array(), array(), '', false);
$resultStub->expects($this->any())
->method('getData')
->will($this->returnValue($data));
$resultStub->expects($this->any())
->method('getQuery')
->will($this->returnValue($query));
$parser = new ResponseParser;
$result = $parser->parse($resultStub);
$expected = array(
'fieldA' => array(
'term1' => 5,
'term2' => 3,
),
'fieldB' => array(
'term3' => 6,
'term4' => 2,
)
);
$this->assertEquals($expected, $result['results']);
$this->assertEquals(2, count($result['results']));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment