[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Полнотекстовый поиск с учетом морфологии
Страницы: 1, 2
Strannik
Добрый день.

Существует таблица в MsSQL 2008

Структура таблиц представлена на SQLFIDDLE

Подскажите как сделать полнотекстовый поиск с учетом морфологии и падежных окончаний в таблице [dbo.Firm] по полям name и name_original?

P.S.: желательно пример...

P.P.S.: и вообще возможна ли организация такого поиска в данной таблице?
Игорь_Vasinsky
ну наверно с SUBSTRING отрезать 2-3 буквы с конца слова

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Strannik
Цитата (Игорь_Vasinsky @ 29.10.2013 - 07:11)
ну наверно с SUBSTRING отрезать 2-3 буквы с конца слова

любопытно то, что если пользователь ввел в поиск окно ПЕРЕВОЗКА ГРУЗОВ, нужно чтобы в результате были значения с ПЕРЕВОЗКА ГРУЗОВ и ГРУЗОПЕРЕВОЗКА.

И вот как это сделать я пока не знаю...

P.S.: есть мысль конечно разбить поисковую строку на массив, у каждого элемента обрезать последний символ и поиграть со сложением элементов массива, но это очень сильно нагрузит базу при запросе...
AlmazDelDiablo
Посмотри в сторону готовых библиотек. Тот же Sphinx, например. Это очень нетривиальная задача, морфологический поиск.

_____________
Блог | VK | GitHub | Twitch
kaww
Strannik, а в чем проблема? MsSql 2008 вроде как поддерживает русскую морфологию. Проблема с конкретным запросом?
Игорь_Vasinsky
сделай поле для тегов - заноси синонимы

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Strannik
Цитата (kaww @ 29.10.2013 - 07:37)
Strannik, а в чем проблема? MsSql 2008 вроде как поддерживает русскую морфологию. Проблема с конкретным запросом?

он то поддерживает, только вот как реализовать(не могу пока разобраться)?
Strannik
Цитата (Игорь_Vasinsky @ 29.10.2013 - 07:37)
сделай поле для тегов - заноси синонимы

Автоматически или как? можно подробнее?
Игорь_Vasinsky
непредсказуемый танец с бубном

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Strannik
Цитата (Игорь_Vasinsky @ 29.10.2013 - 08:37)
непредсказуемый танец с бубном

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

P.S.: даже нужно два символа обрезать, не все падежи учел...
Игорь_Vasinsky
вот фраза

быстрый цикл - чё отрежешь?
инь янь - что отрежешь?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Strannik
Цитата (Игорь_Vasinsky @ 29.10.2013 - 09:41)
вот фраза

быстрый цикл - чё отрежешь?
инь янь - что отрежешь?

добавим проверку на последние два символа, если они равны ов, ив и т.п.(гласная и согласная) убираем два последних символа, если или одна гласная на конце, убираем один символ.

примерно так, условий дописать только под каждый случай...

P.S.: получаем:

быстрый цикл - быстр цикл

инь янь - инь янь
Игорь_Vasinsky
глянь - ???

варианты глянул - глянем и т.д.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Strannik
Цитата (Игорь_Vasinsky @ 29.10.2013 - 10:00)
глянь - ???

варианты глянул - глянем и т.д.

глянь - глянь

варианты глянул - глянем --- вариант глян - глян

//P.S.: единственное, что учет глаголов не обязателен, а так строка выдаст то, что мы ищем, правда теперь вместо 10 строчек на обрезку, получилось 52

//P.P.S.: для пущего извращения, можно еще порядок слов в запросе задать, например чтобы было $find1, затем $find2 и $find3 и только в таком порядке, но это уже по желанию...
Игорь_Vasinsky
твой поиск будет искать всё и везде)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.