powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск одного слова
8 сообщений из 8, страница 1 из 1
Поиск одного слова
    #39159568
petrash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем гуру и патриархам SQL. Примите мою челобитную и не судите строго.

Нужно решить задачу с поиском одного слова. Казалось бы чего проще, ан нет, есть вопросы:
Я делаю запрос , к примеру ищу компании, которые в своем названии содержат слово "порт".
Делаю запрос LIKE '%порт%', он мне находит такие компании как трансПОРТ, или ПОРТрет, или трансПОРТер... Делаю запрос LIKE '% порт %', находит только те компании, в которых справа и слева от слова порт есть еще слова. Если будет компания "Порт Одесса" - не найдет. Пока писал - понял, что что можно сделать костыль типа LIKE '% порт%' OR LIKE '%порт %' OR LIKE '% порт %'.
Но хочется написать одной структурой...

И к тому же, если такой костыль использовать в большом запросе(берется временная таблица с длинной формулой расчета, к ней клеятся еще таблицы и из них делается выборка по такому костылю), то MySQL просто зависает и нужно перезагрудать браузер для восстановления жизнидеятельности моей БД.

Так вот вопрос, как сформулировать мой фильтр WHERE одной записью?
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159574
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем ясна задача.
Если просто нужен один LIKE, то так:
Код: sql
1.
WHERE CONCAT(' ',myfield,' ') LIKE '% порт %'



А если нужно быстро, то просто LIKE-ом не обойдешься. Нужно либо использовать полнотекстовый поиск, либо вообще переходить на внешний поиск, например, Sphinx. Ну или городить свою структуру данных, аналогичную структурам такого рода систем.
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159606
petrash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первый вариант для меня. Премного мерси!!!
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159661
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНе совсем ясна задача.
Если просто нужен один LIKE, то так:
Код: sql
1.
WHERE CONCAT(' ',myfield,' ') LIKE '% порт %'



А если нужно быстро, то просто LIKE-ом не обойдешься. Нужно либо использовать полнотекстовый поиск, либо вообще переходить на внешний поиск, например, Sphinx. Ну или городить свою структуру данных, аналогичную структурам такого рода систем.

Минус индекс...
Может лучше так?
Код: sql
1.
2.
3.
4.
WHERE ( myfield LIKE '% порт %'
 or myfield LIKE 'порт %'
 or myfield LIKE '% порт'
            )



Или уже полнотекст создать по этому полю, и искать по нему.
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159669
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivМинус индекс...Без использования специальных механизмов поиска и/или структур "минус индекс" будет по-любому.

MasterZivМожет лучше так?Нет, не лучше. Фулскан никуда не денется, а проверять придется три LIKE вместо одного.
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159679
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, ну наверное идея была сделать union ( like 'порт%) union (like '%порт%' or like '%порт%' ) limit 1;
то есть, сначала попытаться задействовать индекс.
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159685
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

А limit 1 откуда взялся?
С ним, конечно, задача меняется.
Правда, тогда я бы просто выполнял два запроса отдельно, а не через union/union all. Ибо есть у меня нехорошие предчувствие, что MySQL не догадается не выполнять вторую часть, если нужная запись будет обнаружена в первой части.
...
Рейтинг: 0 / 0
Поиск одного слова
    #39159692
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftMasterZivМинус индекс...Без использования специальных механизмов поиска и/или структур "минус индекс" будет по-любому.

MasterZivМожет лучше так?Нет, не лучше. Фулскан никуда не денется, а проверять придется три LIKE вместо одного.

Вообще, да. Сплю уже, видимо...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск одного слова
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]