Osobiście miałem niewielki problem z indeksowaniem niektórych polskich liter (ż,ś, może coś jeszcze) (korzystam z UTF-8). Poprawiłem w pliku Zend\Search\Lucene\Analysis\Analyzer\Common\Text.php funkcję
<?php
{
$this->_position = 0;
if ($this->_input === null) {
return;
}
// convert input into ascii
$this->_input = iconv($this->_encoding, 'UTF-8'/*'ASCII//TRANSLIT'*/, $this->_input);
$this->_encoding = 'UTF-8'/*'ASCII'*/;
}
?>
oraz w Zend\Search\Lucene\Search\QueryLexer.php zmieniłem 346 linijkę (w funkcji tokenize())
<?php
$strLength = iconv_strlen($inputString, 'UTF-8'/*$encoding*/);
?>
Na szybkiego wydaje się działać, ale nie dałbym temu kodowi 100% gwarancji...
____________________________________________________
Znalazłem trochę lepsze rozwiązanie:
w bootstrap file dodaj następujące ustawienia:
<?php
mb_internal_encoding('UTF-8');
iconv_set_encoding('input_encoding', 'UTF-8');
iconv_set_encoding('output_encoding', 'UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');
?>
po wystartowaniu bazy:
<?php
$db->query('SET CHARACTER SET utf8');
?>
w pliku Zend/Search/Lucene/Search/QueryParser.php zmień wartość atrybutu $_defaultEncoding
<?php
private $_defaultEncoding = 'UTF-8';
?>
i przy indeksowaniu danych podawaj w jakim chcesz je wprowadzić kodowaniu - np.
<?php
$doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents, 'UTF-8'));
?>
Powinno działać