Время доброго. Просветите, пожалуйста. Задача В статьях сайта происходит поиск слов из базы. Найденным словам назначаются всплывающие подсказки. Вопрос Как просклонять искомое слово по: всем падежам, склонениям, численности (единственное или множественное число). Какие-нить есть технологии?
`p r o x y БД какая? Если Postgre, то там есть замечательные встроенные технологии поиска. Информации в гугле море.
БД MySQL Полнотекстный поиск...хм.. Поиск в статье слова уже организован и работает. Теперь задача искомое слово просклонять и искать все врианты склонения. Например взять слово: стол. Его необходимо просклонять: стол, стола, столу, стол, столом, столе, столы, столам, столах...
С MySQL я не знаю. На постгре реализовывал полнотекстовый поиск по лексемам. У него, видите ли есть огромное количество своих словарей и методов для реализации fulltext search)
> однокоренные слова А вот об этом я не подумал. А ведьверно. Реализовано разбором всего текста, так солва выделяются в span. Благодарю за идею, поиск слова в составе другого - это уже часть решения. И все же, вопрос про склонение слов открыт.
У меня в проекте одном mysqlный полнотекстовый поиск. Проблем никаких. Может конечно не так идеально как если бы сам искал, но так он еще и по релевантности выдает Если объемы сравнительно небольшие - не стоит париться, имхо Гуглом все пользовались, думаю http://www.mysql.ru/docs/man/Fulltext_Search.html
`p r o x y Это сложная задача, я с ней столкнулся в своей Инфосфере... долгая история. По идее, надо 1) отрезать по правилам русского языка от слова все приставки, окончания и суффиксы (в таком порядке) 2) получаем корень слова 3) смотрим в аафигенный словарь (есть такие), которые по корню слова дают ID правила морфирования (этих правил в русском всего штук 100) 4) смотрим по этому ID в другой словарь, получаем набор допустимых окончаний для этого корня 5) перебираем все окончания, по очереди присоединяем каждое к исходному слову (но без первоначального окончания) и получаем набор словоформ. Естессно, я у себя сделал не по феншую, но зато гораздо проще
если брать за основу готовые полнотекстовые поисковые движки (наподобие Solr), то там ясно сказано, что любой текст должен обрабатываться по некоторым правилам, разным для разных языков, и индексироваться в особом внутреннем представлении. Точно таким же образом обрабатывается запрос пользователя и осуществляется поиск по индексам. Т.е. готового решения как такового нет - нужно составлять правила склонения, выделения корня, приставки, окончания, рода, падежных окончаний, не забывать про изменяющиеся корни (когда буквы в корне меняются). Ах, да, ещё не забывать про тонну слов-исключений.
ShamahN В тако случае будет найдено слово и "стол" и "столещница". С поиском слова НЕТ проблем. Вопрос в другом - пользователськие слова необходимо просклонять. Что бы потом уже искать. Dagdamor Где бы список глянуть всех приставок, окнчаний, суфиксов....
`p r o x y Это хороший вопрос, ибо я этой байдой не занимался с универа. Если найду ссылки - кину. Еще у меня на харде где-то лежали эти справочники, найти бы... Это не так смешно, как "употр****ть" на некоторых форумах
Даа, я уже думаю проще. Когда пользователь будет создовать эти самые искомые слова, выводить форму с вариантами склонения, и пусть пользователь сам подправить как верно. А то на автаматически верное скланение больше трудо-затрат уйдет, чем я выгоды получу.