|
|
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем гуру и патриархам SQL. Примите мою челобитную и не судите строго. Нужно решить задачу с поиском одного слова. Казалось бы чего проще, ан нет, есть вопросы: Я делаю запрос , к примеру ищу компании, которые в своем названии содержат слово "порт". Делаю запрос LIKE '%порт%', он мне находит такие компании как трансПОРТ, или ПОРТрет, или трансПОРТер... Делаю запрос LIKE '% порт %', находит только те компании, в которых справа и слева от слова порт есть еще слова. Если будет компания "Порт Одесса" - не найдет. Пока писал - понял, что что можно сделать костыль типа LIKE '% порт%' OR LIKE '%порт %' OR LIKE '% порт %'. Но хочется написать одной структурой... И к тому же, если такой костыль использовать в большом запросе(берется временная таблица с длинной формулой расчета, к ней клеятся еще таблицы и из них делается выборка по такому костылю), то MySQL просто зависает и нужно перезагрудать браузер для восстановления жизнидеятельности моей БД. Так вот вопрос, как сформулировать мой фильтр WHERE одной записью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 20:13:46 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
Не совсем ясна задача. Если просто нужен один LIKE, то так: Код: sql 1. А если нужно быстро, то просто LIKE-ом не обойдешься. Нужно либо использовать полнотекстовый поиск, либо вообще переходить на внешний поиск, например, Sphinx. Ну или городить свою структуру данных, аналогичную структурам такого рода систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 20:33:43 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
Первый вариант для меня. Премного мерси!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 21:47:24 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
miksoftНе совсем ясна задача. Если просто нужен один LIKE, то так: Код: sql 1. А если нужно быстро, то просто LIKE-ом не обойдешься. Нужно либо использовать полнотекстовый поиск, либо вообще переходить на внешний поиск, например, Sphinx. Ну или городить свою структуру данных, аналогичную структурам такого рода систем. Минус индекс... Может лучше так? Код: sql 1. 2. 3. 4. Или уже полнотекст создать по этому полю, и искать по нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 00:00:50 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
MasterZivМинус индекс...Без использования специальных механизмов поиска и/или структур "минус индекс" будет по-любому. MasterZivМожет лучше так?Нет, не лучше. Фулскан никуда не денется, а проверять придется три LIKE вместо одного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 00:06:12 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
miksoft, ну наверное идея была сделать union ( like 'порт%) union (like '%порт%' or like '%порт%' ) limit 1; то есть, сначала попытаться задействовать индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 00:32:28 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
netwind, А limit 1 откуда взялся? С ним, конечно, задача меняется. Правда, тогда я бы просто выполнял два запроса отдельно, а не через union/union all. Ибо есть у меня нехорошие предчувствие, что MySQL не догадается не выполнять вторую часть, если нужная запись будет обнаружена в первой части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 00:39:08 |
|
||
|
Поиск одного слова
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivМинус индекс...Без использования специальных механизмов поиска и/или структур "минус индекс" будет по-любому. MasterZivМожет лучше так?Нет, не лучше. Фулскан никуда не денется, а проверять придется три LIKE вместо одного. Вообще, да. Сплю уже, видимо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 01:13:26 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39159679&tid=1832208]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 397ms |

| 0 / 0 |
