22.6. Jeux de caractères.
Précédent | Chapitre 22. Zend_Search | Suivant

## 22.6. Jeux de caractères.

### 22.6.1. Support d'UTF-8 et de jeux de caractères sur un octet.

Zend_Search_Lucene est créée pour fonctionnet avec UTF-8. Les fichier d'index stockent des données unicode en JAVA "modified UTF-8 encoding". Le coeur de Zend_Search_Lucene le supporte complètement, à une exception près: [10]

Cependant, les analyseurs de texte, et le parseur de requête utilisent ctype_alpha() pour tokeniser le texte et les requêtes. ctype_alpha() ne supporte pas l'UTF-8 et devra être remplacé par quelque chose d'autre dans un future proche.

Avant d'être fortement encouragé à convertir vos données en ASCII [11] (pour stocker les documents source, et pour effectuer des requêtes) :

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

[10] Zend_Search_Lucene ne supporte uniquement que les caractères BMP (Basic Multilingual Plane) (de 0x0000 à 0xFFFF) et ne supporte pas les "caractères supplémentaires" (les caractères dont le code est supérieur à 0xFFFF).

Java 2 représente ces caractères comme une paire de valeurs de type char (16-bit), en premier la gamme des hauts-substituts (0xD800-0xDBFF), en deuxième la game des bas-substituts (0xDC00-0xDFFF). Ensuite tout est encodé comme des caractères UTF-8 habituels dans six octets. La représentation standard d'UTF-8 utilise quatre octets pour les caractères supplémentaires.

[11] Si les données contiennent des caractères non-ascii ou arrivent en UTF-8

Précédent | Niveau supérieur | Suivant
22.5. Types de requêtes | Sommaire | 22.7. Extensibilité