# Conjuntos de Caracteres

## Suporte aos conjuntos de caracteres UTF-8 e byte-simples.

Zend_Search_Lucene foi projetado para trabalhar com conjuntos de caracteres UTF-8. Arquivos de índice armazenam dados unicode no formato de codificação "UTF-8 modificado" usado pelo Java. O núcleo do Zend_Search_Lucene suporta-os plenamente, com uma exceção: Zend_Search_Lucene suporta somente os caracteres do Plano Multilingual Básico (BMP) (de 0x0000 a 0xFFFF), não suportando os caracteres suplementares (caracteres acima de 0xFFFF) O Java 2 representa estes caracteres como um par de valores do tipo char (16 bits), o primeiro vem da faixa superior (0xD800-0xDBFF), o segundo, da faixa inferior (0xDC00-0xDFFF). Logo eles são codificados como caracteres usuais UTF-8 em seis bytes. A representação padrão UTF-8 utiliza quatro bytes para caracteres suplementares.

Em todo caso, tanto os analizadores de texto, quanto os interpretadores e processadores de consultas, utilizam a função ctype_alpha() para tokenizar os textos e as consultas. A função ctype_alpha() não suporta UTF-8 e sua substituição deve ser considerada em um futuro próximo.

Por enquanto, recomendamos a conversão dos dados para a representação ASCII. Se os dados estiverem em formato UTF-8 ou, obrigatoriamente, contiverem caracteres inexistentes em ASCII. (isso vale tanto para consultas, quanto para armazenagem de documentos fonte):

    <?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);
    ?>