У меня серьезные проблемы с использованием Zend_Lucene и иностранных символов, таких как åäö. Эти проблемы возникают как при создании индекса, так и при его запросе. Я пробовал и iso-8859-1, и utf-8.
ISO-8859-1
Запрос, который не работает, выглядит как "+_area:skåne
". С Zend_Lucene я не получаю совпадений, но если я выполню этот запрос в Luke, я получу много соответствующих документов.
Указатель содержит 20 полей. Поле "_area" добавлено со следующим синтаксисом:
$doc->addField(Zend_Search_Lucene_Field::keyword('_area', strtolower($item['area']), 'iso-8859-1'));
Я использую анализатор Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive
.
Во время индексирования иногда появлялось сообщение об ошибке ниже (проиндексированные документы были случайно выбраны из БД с кодировкой iso-8859-1)
Примечание: iconv (): обнаружен недопустимый символ во входной строке в TextNum.php.
Это было «решено» путем проверки того, что вход $ this -> _ пуст, так как казалось, что это вызвало уведомления. Примечание: странные результаты запроса были ранее существовавшим условием.
Когда я выполняю поиск по ключевым словам с использованием иностранных символов, я получаю сообщение об ошибке выше, но при поиске в текстовых полях он ведет себя по-другому. Затем он генерирует около сотни ошибок ниже.
Примечание: неопределенное смещение: 1996 в \ Zend \ Search \ Lucene \ Search \ Query \ MultiTerm.php в строке 472
Но он производит то, что выглядит как правильный набор результатов! Кстати, этот второй запрос не приводит ни к каким результатам в Люке.
UTF-8
Я также пробовал UTF-8, потому что, насколько мне известно, Zend_Lucene использует его внутренне. Поскольку набор данных ISO-8859-1, я конвертирую его, используя utf8_encode
. Но при индексации возникают следующие ошибки.
Примечание: неопределенное смещение: 266979 дюйм
\ Zend \ Search \ Lucene \ Индекс \ SegmentInfo.php
по линии 632
Примечание: попытка получить собственность
не объект в
\ Zend \ Search \ Lucene \ Индекс \ SegmentMerger.php
по линии 196
Примечание: попытка получить собственность
не объект в
\ Zend \ Search \ Lucene \ Индекс \ SegmentMerger.php
по линии 200
Примечание: неопределенный индекс: в
\ Zend \ Search \ Lucene \ Индекс \ SegmentWriter.php
по линии 231
Примечание: пытаясь получить собственность
не объект в
\ Zend \ Search \ Lucene \ Индекс \ SegmentWriter.php
по линии 231
Примечание: неопределенное смещение: 250595 дюйма
\ Zend \ Search \ Lucene \ Индекс \ SegmentInfo.php
на линии 2020
Примечание: попытка получить собственность
не объект в
\ Zend \ Search \ Lucene \ Индекс \ SegmentInfo.php
на линии 2020
Примечание: неопределенный индекс: в
\ Zend \ Search \ Lucene \ Индекс \ SegmentWriter.php
по линии 465
...
Итак. Может кто-нибудь, пожалуйста, пролить свет? :) Я считаю (после нескольких дней поиска в Google), что я не единственный, кто испытывает это.