26 апреля 2011 г.

Lucene.Net и German Umlaute

При создании полнотекстового поиска по сайту главной задачей, конечно же, является качество поиска. Lucene.Net в этом случае очень хорошая библиотека для поиска, быстрота и главное качество поиска у неё отменное. За время работы с данной библиотекой мне пришлось столкнуться только с одно проблемой, а именно с невозможностью поиска немецких умляутов. Дело в том, что для нормального их поиска нужно использовать анализатор немецкого языка, но информация на сайте в большей степени была представлена на английском, поэтому данный способ не очень подходил. Немного порывшись в интернете в поисках хорошего решения данной задачи и ничего не найдя. Было найдено свое решение, быстрое и в то же время как показывает практика действенное.


Я поступил следующим образом. При индексации информации каждый умляут был заменен на его аналог, т.е. ä = a, ü = u. В конечном итоге вся наша информация представлена одним языком, при поиске мы должны так же если введен умляут заменить его на аналог английского языка.


Был написан метод, который использовался как при поиске, так и при индексации информации.



private string ReplaceUmlauteString(string strSearch)
{
return strSearch.Replace('ü', 'u').Replace('ö', 'o').Replace('ä', 'a');
}

После использования данного метода проблемы при поиске пропали. Если у Вас есть какое-то другое решение, которое намного действеннее моего напишите, его в комментарии, будет интересно попробовать.

Комментариев нет: