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.