Вхождение хотя бы одного слова

Статус
В этой теме нельзя размещать новые ответы.

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Имеется текстовое поле (varchar, text). В нём содержится довольно длинная строка. Необходимо вывести строки, в которых есть хотя бы 1 из перечисленных слов.
Выборка разовая, OR не предлагать - слов дофига, полей тоже.

MSSQL 2008.
Время запроса в рамках разумного не ограничено.

UPD 2014-08-06
У меня есть sql studio - больше ничего юзать нельзя...
 
Последнее редактирование модератором:
Сппсибо, но думал что-то примитивное есть... Уже через кучу OR и like сделал... Благо 32 ядра это не особо заметили...
 
Сппсибо, но думал что-то примитивное есть... Уже через кучу OR и like сделал... Благо 32 ядра это не особо заметили...
SP - это самый сок и юзабельна везде, удобно и исполняется на сервере

У меня есть sql studio - больше ничего юзать нельзя...
в том примере, что я дал, можно просто выдрать код с декларами и их менять когда нужно, сохранить как sql файл, подгружать и запускать запрос.
 
Последнее редактирование модератором:
Вариант полнотекстового поиска рассматриваете?

Код:
SELECT *
FROM `messages`
WHERE MATCH (message, title) AGAINST ('слово1 слово2 +слово3обязательно' IN BOOLEAN MODE);

работает с FULLTEXT INDEX, очень быстро, * дают возможность использовать шаблоны, запрос на множество слов формируется тоже просто.

SP - это самый сок и юзабельна везде, удобно и исполняется на сервере

С SP принято работать в T-SQL, PL, Oracle, в MySQL скорее вы их не найдете. В вебе они не прижились, не поддерживаются многими клиентами. Хотя сами по себе они хороши и поддерживаются, но есть "общепринятые" подходы и в частности в Веб, с текущими подходами к архитектурам, будет больше минусов от их использования. Вы MVC сломаете бизнес логикой в модели.

Да, извиняюсь, проглядел про MSSQL. Тогда согласен, SP - хороший вариант.
 
Последнее редактирование модератором:
Поля не поддерживают полнотекстовый поиск. И причём тут MySQL, когда речь про MSSQL.
 
Вариант полнотекстового поиска рассматриваете?

Код:
SELECT *
FROM `messages`
WHERE MATCH (message, title) AGAINST ('слово1 слово2 +слово3обязательно' IN BOOLEAN MODE);

работает с FULLTEXT INDEX, очень быстро, * дают возможность использовать шаблоны, запрос на множество слов формируется тоже просто.



С SP принято работать в T-SQL, PL, Oracle, в MySQL скорее вы их не найдете. В вебе они не прижились, не поддерживаются многими клиентами. Хотя сами по себе они хороши и поддерживаются, но есть "общепринятые" подходы и в частности в Веб, с текущими подходами к архитектурам, будет больше минусов от их использования. Вы MVC сломаете бизнес логикой в модели.
у ТС MSSQL, с использованием SP в веб архитектурах и MVC не было особых проблем, иногда разные казусы бывают, но это в принципе не имеет отношения к топику
 
Есть ещё регулярки, которые должны отработать быстрее кучи LIKE ... OR
Для MySQL это выглядит так (3 разных запроса для демонстрации) :
PHP:
SELECT 'Здесь много разных слов найти мы хотим' REGEXP "(слов|мы|хотим)";
SELECT 'Мы ищем слова' REGEXP "(слов|мы|хотим)";
SELECT 'А здесь нет ни одного нам необходимого' REGEXP "(слов|мы|хотим)";

Адаптировать для MSSQL 2008, возможно поможет - Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Есть ещё регулярки, которые должны отработать быстрее кучи LIKE ... OR
Адаптировать для MSSQL 2008, возможно поможет - Для просмотра ссылки Войди или Зарегистрируйся
в таком случае нужно компилировать С# библиотеку и подключатьк серваку. я думаю, что это будет немного медленнее, чем нативная СП
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху