Zend Search Lucene и акцентированные символы

Я пытаюсь найти способ в Zend_Search_Lucene реализовать следующий сценарий:

Допустим, у нас есть пользователь, которого зовут Аиша (обратите внимание на специальный символ). Если я ищу в индексе Aicha (без специальной производной от i), я бы хотел, чтобы Aïcha возвращалась в результатах.

Есть ли что-то особенное, что мне нужно сделать при индексировании или поиске, чтобы эта работа работала? Я читал решения о нормализации данных перед индексированием, замене всех специальных символов нормализованными символами, но я бы предпочел не идти по этому пути.

Заранее спасибо, Гэри


person Gary M    schedule 27.07.2010    source источник


Ответы (1)



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

попробуйте использовать этот вывод функции при создании индекса, сохраните фактическое значение без его индексации =) надеюсь, что это поможет, я, честно говоря, не думаю, что есть другой способ.

person Abdullah Khan    schedule 03.08.2010