15.5. Кодировки
Пред. | Глава 15. Zend_Search | След.

## 15.5. Кодировки

### 15.5.1. Поддержка UTF-8 и однобайтных наборов символов

Zend_Search_Lucene рассчитан на работу с текстами в кодировке UTF-8. Файлы индекса хранят данные unicode в кодировке Modified UTF-8 от Java. Ядро Zend_Search_Lucene полностью поддерживает его за одним исключением. [6]

Тем не менее, анализатор текста и парсер запросов используют `ctype_alpha()` для разбиения текста и запросов на лексемы. `ctype_alpha()` не поддерживает UTF-8 и будет заменен в ближайшем будущем.

До этого мы настоятельно рекомендуем конвертировать данные в представление ASCII [7] (как для хранения исходных документов, так и для запросов):

    <?php
    $doc = new Zend_Search_Lucene_Document();
    ...
    $docText = iconv('ISO-8859-1', 'ASCII//TRANSLIT', $docText);
    $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $docText));

    ...

    $query = iconv('', 'ASCII//TRANSLIT', $query);
    $hits = $index->find($query);
    ?>

[6] Zend_Search_Lucene поддерживает только символы Basic Multilingual Plane (от 0x0000 до 0xFFFF) и не поддерживает дополнительные символы (символы, чьи коды больше 0xFFFF).

Java 2 представляет эти символыв виде пары значений символьного типа (16 бит), перое из диапазона 0xD800-0xDBFF, второе из диапазона 0xDC00-0xDFFF. Тогда они кодируются как обычные символы UTF-8 в шести байтах. Стандартное представление UTF-8 использует четыре байта для дополнительных символов.

[7] Если данные могут содержать не-ascii символы или быть представлены в UTF-8.

Пред. | Уровень выше | След.
15.4. Типы запросов | Начало | 15.6. Расширяемость