учитывать все формы при поиске, либо вырезать корень слова и искать
только по нему. Последний способ называется stemming, отличается
быстротой, простотой и не нуждается в словарях. Именно его используют Битрикс и MS Sharepoint, Sphinx. Проблемы возникают со словами где корень изменчив (бег-бежать, расти-прирост, лев-львица). Я не буду рассказывать про стемминг, посмотрите как это реализовано php с русской морфологией. Меня больше интересуют словари. Национальный корпус русского языка приводит примерно какие характеристики могут иметься у любого слова. Теперь мы плавно подходим к пониманию того что нам необходима современная морфологическая база слов (RMU, AOT), прототип для семантической сети.
Индексация и поиск
Идея — в использовании базы данных (Postgre) с таблицами морф (все возможные слова) и связанных с ним лексем (корней и аффиксов). При индексации документа происходит:- Разбивка документа на слова
- Нормализация — каждое слово связывается с морфой если такая есть
- Если морф нет, то в будующем вручную они добавляются в словарь благодаря регистрации частоты упоминания тех или иных слов
Высшие уровни языка
Как быть с релевантностью? Учтение расстояние слов или их последовательности — дело уже синтаксического уровня. Синтаксическая индексация подразумевает разбиение на предложения и создание связей между словами, которые используются в одном предложении. Можно в дополнение учитывать в качестве какой части речи выступает лексема. В базе данных это выглядит как очередная таблица со связями между лексемами и при поиске проверяется например присутсвие нескольких слов в одном предложении.Уровень семантический должен уже учитывать типы отношений между словами (синонимы/антонимы, меронимы=партоним/холонимы, гипонимы/гипермимы), т.е. в идеале на запрос «дети Бонапарта» нашлись бы документы типа «отец Валевского — Наполеон».Но самая главная задача высших уровней это разбор омонимии, т.е. многозначности как корней (ключ, лук) так и ударения (засЫпал/засыпАл, пАрить/парИть). На данный момент и google и yandex учитывают спряжения слов, но какой именно смысл вы имели ввиду не переспрашивают. Читайте также:- Стемминг Портера для русского языка
- Использование стемминга в Раблере
- Куча ссылок по лингвистическим ресурсам
- Словари+софт в своём непонятном формате на aot.ru
+Оригинал

