Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2015, 08:16   #1
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
Вопрос Сложный поиск по ключевым словам

Добрый день, форумчане!
Возникла такая трудность с поиском по базе mysql.
Суть задачи:
В одной таблице(table1) есть поле `desc`(text) в котором хранится некоторое описание, чего-либо. В другой(table2) есть поле `keys`(text) в котором хранятся ключевые слова через запятую, нужно по этим словам находить записи в (table1) по полю `desc` . Сейчас использую LIKE
и запрос выходит очень громоздким. Ключевых слов может быть от 0 до 300.
Вот, что выходит сейчас:
Код:
((`desc` LIKE '%1СБитрикс%' OR `desc` LIKE '%LP%' OR 
`desc` LIKE '%WP%' OR `desc` LIKE '%joomla%' OR `desc` LIKE '%landing%'
 OR `desc` LIKE '%landing page%' OR `desc` LIKE '%opencart%' OR `desc` LIKE '%wordpress%' OR 
`desc` LIKE '%верстка%' 
OR `desc` LIKE '%вордпресс%' OR `desc` LIKE '%джумла%' OR `desc` LIKE '%лендинг%' OR 
`desc` LIKE '%лендинг пейдж%' 
OR `desc` LIKE '%лэндинг%' OR `desc` LIKE '%натяжка%' OR `desc` LIKE '%натянуть%' 
OR `desc` LIKE '%опенкарт%' OR `desc` LIKE '%сверстать%') AND (`cats` LIKE '%,217,%' 
OR `cats` LIKE '%,27,%' 
OR `cats` LIKE '%,8,%')) and (`desc` NOT LIKE '%1C%' AND `desc` NOT LIKE '%API%' AND 
`desc` NOT LIKE '%Bitrix%' AND `desc` NOT LIKE '%Drupal%' AND `desc` NOT LIKE '%HostCMS%' AND 
`desc` NOT LIKE '%Modx%' AND `desc` NOT LIKE '%Prestashop%' AND `desc` NOT LIKE '%UMI%' 
AND `desc` NOT LIKE '%magento%' AND `desc` NOT LIKE '%simpla%' AND 
`desc` NOT LIKE '%Битрикс%' AND `desc` NOT LIKE '%дизайн%' AND `desc` NOT LIKE '%дизайн сайта%' 
AND `desc` NOT LIKE '%друпал%')
Кольша вне форума Ответить с цитированием
Старый 20.08.2015, 08:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
запрос выходит очень громоздким
Скорость запроса удовлетворительная?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2015, 08:45   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Скорость да, но иногда бывает так, что слишком грузит сервер.
Кольша вне форума Ответить с цитированием
Старый 20.08.2015, 09:24   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

В MySql есть же временные таблицы. Загнать перечень ключевых слов отдельными записями во временную таблицу и запрос примерно такой
Код:
SELECT M.* FROM table1 M,TempTable T WHERE M.desc like '%'+T.Key+'%'
Создание временной и запрос точно быстрей чем достаточно большое количество OR, особенно если это в процедуре провернуть. Проверено на MS SQL. Как MySQL сервер к этому отнесется смотри и эксперементируй
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.08.2015 в 09:27.
Аватар вне форума Ответить с цитированием
Старый 20.08.2015, 12:41   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Согласен. Действительно можно двумя запросами:
1) Запрос, где участвуют только AND условия, который формирует временную таблицу (Курсор называется)
2) Второй запрос, который уже снабжен остальными OR условиями, обращающийся к этому курсору.
Действительно скорость может возрости.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по нескольким словам в таблице mysql bizarre86 PHP 17 06.05.2013 06:05
Сложный Поиск frantic150 Microsoft Office Excel 1 27.04.2010 06:34
Нужна помощь по работе с файлом *.chm(поиск по ключевым словам) v_skull Общие вопросы Delphi 5 21.06.2009 14:44
access+delphi поиск по словам в поле memo gvozdkoff БД в Delphi 2 25.02.2009 07:13
Скрыть текстовый файл от поиска по ключевым словам встроенными средсвами Win и специальным ПО DenisVR Безопасность, Шифрование 3 20.10.2008 02:04