22.6. Karakterset.
Terug | Hoofdstuk 22. Zend_Search | Volgende

## 22.6. Karakterset.

### 22.6.1. Support voor UTF-8 en single-byte karaktersets.

Zend_Search_Lucene is ontworpen om met de UTF-8 karakterset te werken. Indexbestanden slaan unicode data op in Java's "modified UTF-8 encoding". Zend_Search_Lucene core biedt volledige support voor deze vorm op één uitzondering na. [9]

Niettemin, tekst analysator, query parser tekst analysator en query parser gebruiken ctype_alpha() om tekst en queries van tokens te voorzien. ctype_alpha() biedt geen support voor UTF-8 en zal moeten worden vervangen in de nabije toekomst.

We raden je sterk aan jouw data in ASCII om te schrijven [10] (zowel voor het opslaan als voor het queryen van de brondocumenten):

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

[9] Zend_Search_Lucene biedt alleen support voor Basic Multilingual Plane (BMP) karakters (van 0x0000 tot 0xFFFF) en biedt geen support voor bijkomende karakters (karakters waarvan de codes groter zijn dan 0xFFFF)

Java 2 stelt deze karakters voor als een paar van char (16-bit) waarden, het eerste paar van de hogere reeks (0xD800_0xDBFF), het tweede van de lagere reeks (0xDC00-0XDFFF). Daarna worden ze omgeschreven op 6 bytes zoals gewone UTF-8 karakters. De standaard UTF-8 voorstelling gebruikt vier bytes voor bijkomende karakters.

[10] Indien de data in non-ascci karakters of UTF-8 is geschreven.

Terug | Omhoog | Volgende
22.5. Query Types | Begin | 22.7. Uitbreidbaarheid