2010-07-27 14 views
6

estoy tratando de encontrar una manera de Zend_Search_Lucene de lograr el siguiente escenario:Zend Lucene búsqueda y caracteres acentuados

Digamos que tenemos un usuario y su nombre es Aïcha (tenga en cuenta el carácter especial). Si busco el índice de Aicha (sin la derivada especial de i), me gustaría que Aïcha sea devuelta en los resultados.

¿Hay algo especial que deba hacer al indexar o buscar para que esto funcione? He leído soluciones sobre la normalización de los datos antes de indexar, reemplazando todos los caracteres especiales con caracteres normalizados, pero prefiero no ir por esa ruta.

Gracias de antemano, Gary

Respuesta

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

intenta utilizar esta salida funciones al crear el índice, almacenar el valor real y sin indexación =) Espero que ayuda, yo francamente no creo que haya ninguna otra manera .

Cuestiones relacionadas