Commit 068ebe83 authored by Bas de Nooijer's avatar Bas de Nooijer

Merge branch 'feature/spellcheck-bugfix' into develop

parents ea0232ea 3a1b3458
......@@ -12,7 +12,8 @@ $query->setRows(0);
// add spellcheck settings
$spellcheck = $query->getSpellcheck();
$spellcheck->setQuery('delll ultrashar');
$spellcheck->setQuery('tes');
$spellcheck->setCount(10);
$spellcheck->setBuild(true);
$spellcheck->setCollate(true);
$spellcheck->setExtendedResults(true);
......@@ -35,8 +36,12 @@ foreach($spellcheckResult as $suggestion) {
echo 'StartOffset: '.$suggestion->getStartOffset().'<br/>';
echo 'EndOffset: '.$suggestion->getEndOffset().'<br/>';
echo 'OriginalFrequency: '.$suggestion->getOriginalFrequency().'<br/>';
echo 'Frequency: '.$suggestion->getFrequency().'<br/>';
echo 'Word: '.$suggestion->getWord().'<br/>';
foreach ($suggestion->getWords() as $word) {
echo '-----<br/>';
echo 'Frequency: '.$word['freq'].'<br/>';
echo 'Word: '.$word['word'].'<br/>';
}
echo '<hr/>';
}
......
......@@ -182,16 +182,19 @@ class Spellcheck extends ResponseParserAbstract implements ComponentParserInterf
$endOffset = (isset($value['endOffset'])) ? $value['endOffset'] : null;
$originalFrequency = (isset($value['origFreq'])) ? $value['origFreq'] : null;
if (is_string($value['suggestion'][0])) {
$word = $value['suggestion'][0];
$frequency = null;
} else {
$word = $value['suggestion'][0]['word'];
$frequency = $value['suggestion'][0]['freq'];
$words = array();
foreach($value['suggestion'] as $suggestion) {
if (is_string($suggestion)) {
$suggestion = array(
'word' => $suggestion,
'freq' => null,
);
}
$words[] = $suggestion;
}
return new Suggestion(
$numFound, $startOffset, $endOffset, $originalFrequency, $word, $frequency
$numFound, $startOffset, $endOffset, $originalFrequency, $words
);
}
}
......@@ -51,17 +51,15 @@ class Suggestion
* @param int $startOffset
* @param int $endOffset
* @param int $originalFrequency
* @param string $word
* @param int $frequency
* @param array $words
*/
public function __construct($numFound, $startOffset, $endOffset, $originalFrequency, $word, $frequency)
public function __construct($numFound, $startOffset, $endOffset, $originalFrequency, $words)
{
$this->numFound = $numFound;
$this->startOffset = $startOffset;
$this->endOffset = $endOffset;
$this->originalFrequency = $originalFrequency;
$this->word = $word;
$this->frequency = $frequency;
$this->words = $words;
}
/**
......@@ -107,13 +105,28 @@ class Suggestion
}
/**
* Get word
* Get first word
*
* @return string
* @return string|null
*/
public function getWord()
{
return $this->word;
$word = reset($this->words);
if (isset($word['word'])) {
return $word['word'];
} else {
return $word;
}
}
/**
* Get all words (and frequencies)
*
* @return array
*/
public function getWords()
{
return $this->words;
}
/**
......@@ -125,7 +138,12 @@ class Suggestion
*/
public function getFrequency()
{
return $this->frequency;
$word = reset($this->words);
if (isset($word['freq'])) {
return $word['freq'];
} else {
return null;
}
}
}
......@@ -194,6 +194,10 @@ class SpellcheckTest extends \PHPUnit_Framework_TestCase
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 2
),
1 => array (
'word' => 'ultrasharpy',
'freq' => 1
),
),
......@@ -209,6 +213,9 @@ class SpellcheckTest extends \PHPUnit_Framework_TestCase
$result = $this->parser->parse($this->query, null, $data);
$collations = $result->getCollations();
$this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
$words = $result->getSuggestion(1)->getWords();
$this->assertEquals(array('word' => 'ultrasharpy', 'freq' => 1), $words[1]);
}
public function testParseNoData()
......
......@@ -40,7 +40,7 @@ class SuggestionTest extends \PHPUnit_Framework_TestCase
*/
protected $result;
protected $numFound, $startOffset, $endOffset, $originalFrequency, $word, $frequency;
protected $numFound, $startOffset, $endOffset, $originalFrequency, $words, $frequency;
public function setUp()
{
......@@ -48,11 +48,19 @@ class SuggestionTest extends \PHPUnit_Framework_TestCase
$this->startOffset = 2;
$this->endOffset = 3;
$this->originalFrequency = 4;
$this->word = 'dummyword';
$this->frequency = 5;
$this->words = array(
array(
'word' => 'dummyword',
'freq' => 5
),
array(
'word' => 'secondword',
'freq' => 1
)
);
$this->result = new Suggestion(
$this->numFound, $this->startOffset, $this->endOffset, $this->originalFrequency, $this->word, $this->frequency
$this->numFound, $this->startOffset, $this->endOffset, $this->originalFrequency, $this->words
);
}
......@@ -78,12 +86,17 @@ class SuggestionTest extends \PHPUnit_Framework_TestCase
public function testGetWord()
{
$this->assertEquals($this->word, $this->result->getWord());
$this->assertEquals($this->words[0]['word'], $this->result->getWord());
}
public function testGetFrequency()
{
$this->assertEquals($this->frequency, $this->result->getFrequency());
$this->assertEquals($this->words[0]['freq'], $this->result->getFrequency());
}
public function testGetWords()
{
$this->assertEquals($this->words, $this->result->getWords());
}
}
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