проблема кодирования люцена в Zend Framework - PullRequest
1 голос
/ 29 апреля 2011

я использую поисковый индексатор lucene.

это хорошо работает для английского языка, но я использую персидский на моем сайте, и он не может индексировать для этого языка

например "سلام"

я использую этот код для создания документа:

public function __construct($class, $key, $title,$contents, $summary, $createdBy, $dateCreated)
    {
        $this->addField(Zend_Search_Lucene_Field::Keyword('docRef', "$class:$key"));
        $this->addField(Zend_Search_Lucene_Field::UnIndexed('class', $class));
        $this->addField(Zend_Search_Lucene_Field::UnIndexed('key', $key));
        $this->addField(Zend_Search_Lucene_Field::Keyword('title', $title ,'utf-8'));
        $this->addField(Zend_Search_Lucene_Field::unStored('contents', $contents , 'UTF-8'));
        $this->addField(Zend_Search_Lucene_Field::text('summary', $summary , 'UTF-8'));
        $this->addField(Zend_Search_Lucene_Field::Keyword('dateCreated', $dateCreated));
    }

Ответы [ 2 ]

6 голосов
/ 29 апреля 2011

Добавить это (лучшее место начальной загрузки)

    Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
    Zend_Search_Lucene_Analysis_Analyzer::setDefault(
        new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()
    );
1 голос
/ 29 июля 2011

У меня возникла та же проблема, о которой сообщил @afsane, а затем я попробовал решение, предоставленное @ArneRie.Это решило мою проблему, хотя после некоторого тестирования я понял, что первая строка не нужна (по крайней мере, в моей текущей настройке).

Таким образом, решение, которое работало для меня, состояло в том, чтобы явно установить анализатор по умолчанию перед созданием моего индекса:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());
$index = Zend_Search_Lucene::create('/path/to/my/index');

Мне не нужно было явно устанавливать анализатор по умолчанию перед открытием индекса для запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...