Zend Search Lucene и ударные персонажи - PullRequest
6 голосов
/ 27 июля 2010

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

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

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

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

1 Ответ

3 голосов
/ 03 августа 2010

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

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

...