14.5. Zeichensatz.
Zurück | Kapitel 14. Zend_Search | Weiter

## 14.5. Zeichensatz.

### 14.5.1. Unterstützung für UTF-8 und Zeichensätze mit einzelnen Bytes.

Zend_Search_Lucene wurde entwicklet, um mit dem UTF-8 Zeichensatz zu arbeiten. Die Indexdateien speichern Unicode Daten in Javas "modified UTF-8 encoding". Der Kern von Zend_Search_Lucene unterstützt dies komplett mit einer Ausnahme. [7]

Dennoch verwenden die Textanalysatoren und der Query Parser ctype_alpha(), um Texte und Abfragen in Tokens aufzuteilen. ctype_alpha() unterstützt UTF-8 nicht und muss in naher Zukunft durch etwas anderes ersetzt werden.

Vorher empfehlen wir sehr, deine Daten in eine ASCII Darstellung [8] umzuwandeln (sowohl für das Speichern der Quelldokumente als auch für die Abfragen):

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

[7] Zend_Search_Lucene unterstützt nur "Basic Multilingual Plane" (BMP) Zeichen (von 0x0000 bis 0xFFFF) und unterstützt keine "zusätzlichen Zeichen" (Zeichen, dessen Kodierungspunkt größer als 0xFFFF sind).

Java 2 stellt diese Zeichen als ein Paar von Zeichenwerten (16-bit) dar, das erste aus dem "high-surrogates" Bereich (0xD800-0xDBFF), das zweite aus dem "ow-surrogates" Bereich (0xDC00-0xDFFF). Dann werden sie als normale UTF-8 in sechs Bytes kodiert. Die Standard UTF-8 Darstellung verwendet vier Bytes für zusätzliche Zeichen.

[8] Wenn Daten Nicht-ASCII Zeichen enthalten sein könnten oder als UTF-8 vorliegen.

Zurück | Nach oben | Weiter
14.4. Abfragearten | Zum Anfang | 14.6. Erweiterbarkeit