2010-07-27 12 views
6

Próbuję znaleźć sposób na Zend_Search_Lucene zwlec następujący scenariusz:Zend Search Lucene i znaki akcentowane

Powiedzmy mamy użytkownikowi, a jej nazwa jest Aicha (uwaga na znaki specjalne). Jeśli szukam indeksu dla Aicha (bez specjalnej pochodnej i), chciałbym, aby Aacha została zwrócona w wynikach.

Czy jest coś szczególnego, co muszę zrobić, indeksując lub wyszukując, aby to zadziałało? Czytałem rozwiązania dotyczące normalizowania danych przed indeksowaniem, zastępując wszystkie znaki specjalne znormalizowanymi postaciami, ale wolałbym nie iść tą drogą.

Dzięki z góry, Gary

Odpowiedz

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

spróbuje użyć tego wyjścia funkcji podczas tworzenia indeksu, przechowywać wartość rzeczywistą bez indeksowania go =) nadzieję, że to pomaga, ja szczerze nie sądzę, istnieje jakikolwiek inny sposób .

Powiązane problemy