27.6. Karakterset.

27.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.