2010-07-27 7 views
6

Ich versuche, einen Weg in Zend_Search_Lucene zu finden das folgende Szenario ziehen aus:Zend Search Lucene und Sonderzeichen

Angenommen, wir haben einen Benutzer und ihr Name ist Aïcha (beachten Sie die Sonderzeichen). Wenn ich den Index für Aicha suche (ohne die spezielle Ableitung von i), möchte ich, dass Aïcha in den Ergebnissen zurückgegeben wird.

Gibt es etwas Besonderes, das ich beim Indizieren oder Suchen tun muss, damit dies funktioniert? Ich habe Lösungen gelesen, um die Daten vor der Indizierung zu normalisieren und alle Sonderzeichen durch normalisierte Zeichen zu ersetzen, aber ich würde diesen Weg lieber nicht gehen.

Vielen Dank im Voraus, Gary

Antwort

3
 

function normalize ($string){ 
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ 
ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ'; 
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuy 
bsaaaaaaaceeeeiiiidnoooooouuuyybyRr'; 
    $string = utf8_decode($string); 
    $string = strtr($string, utf8_decode($a), $b); 
    $string = strtolower($string); 
    return utf8_encode($string); 
} 
$passToIndexer = normalize(" Aïcha "); 
 

versuchen diese Funktionen Ausgabe zu verwenden, während der Erstellung des Index ohne Indexierung es den aktuellen Wert speichern =) hoffe, es hilft, ich es ehrlich gesagt denke nicht, eine andere Möglichkeit ist .