2010-07-27 8 views
6

J'essaie de trouver un moyen Zend_Search_Lucene de retirer le scénario suivant:Zend Lucene Recherche et caractères accentués

Disons que nous avons un utilisateur et son nom Aicha (notez le caractère spécial). Si je cherche l'index pour Aicha (sans la dérivée spéciale de i), j'aimerais que Aïcha soit retourné dans les résultats.

Y at-il quelque chose de spécial que je dois faire lors de l'indexation ou de la recherche pour que cela fonctionne? J'ai lu des solutions sur la normalisation des données avant l'indexation, en remplaçant tous les caractères spéciaux par des caractères normalisés, mais je préfère ne pas suivre cette voie.

Merci à l'avance, Gary

Répondre

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

essayer d'utiliser cette sortie de fonctions tout en créant l'indice, stocker la valeur réelle sans l'indexer =) espère que cela aide, je ne Franchement pense qu'il ya une autre façon .

Questions connexes