![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
DissDoc |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Всем привет. Итак проблема, есть набор слов в БД (один столбец)
Нужно сравнивать запрос только с начала слов Если делаю так
То мне выдастся все! А нужно сравнивать от начала слов. Тогда мне по запросу like '%Ив%' получу список Иванов Иван Васильев Иван Как такое реализовать? |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Это - диалектозависимо. Указывайте СУБД и просите перенести тему в соотв. раздел.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: нет Всего: 16 |
? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Возможный более-менее независимый вариант:
Да и тот - зависит от маско-символов диалекта. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Frees |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: нет Всего: 54 |
-------------------- Кольцов Виктор Владимирович |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
"Васильев Иван" не отберется. Это сообщение отредактировал(а) Zloxa - 22.10.2010, 08:47 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Тогда уж
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: нет Всего: 54 |
Это я и имел ввиду... вариант
мне больше понравился (я не видел этот пост когда писал свой) -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
DissDoc |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
У меня MySQL. Это может сильно влиять?
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: нет Всего: 54 |
может в сторону полнотекстового поиска посмотреть... -------------------- Кольцов Виктор Владимирович |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
конечно, может.
потому что в mysql есть встроенные механизмы полнотекстового поиска. но там есть конструктивное ограничение - работает только для myisam таблиц. а у них уже не работают транзакции. т.е. если «хочется» и транзакции иметь, и шустрый полнотекстовый поиск, то fulltext index уже «не то». в таком случае будет лучше использовать sphinx. правда, это потребует запуска отдельной программы, что не на каждом хостинге будет возможно. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
быть может ему не надо индексирования, а достаточно rlike '[^|/W]Ив'
Это сообщение отредактировал(а) Zloxa - 22.10.2010, 10:34 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
DissDoc |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
А rlike выполняется в запросе в MySQL?
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
DissDoc |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Zloxa, ваш запрос не совсем верно работает. Я вот все никак не мог успокоиться и в результате нашел правильное решение для себя. Мне кажется оно более простое
можно даже чуть ограничить в моем контекста и сравнивать по регистру через BINARY ![]() |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
regexp там точно есть, только зачем? Для задачи достаточно match..against in boolean mode, а regexp индексы не пользует (если и можно, то с пробелмами), like пользует только если поиск с начала строки. Можно поставить триггер к таблице, который бы вёл другую таблицу со списками слов по нужным полям. Тогда, при поиске, можно использовать простые индексы и свои навороты.
Это сообщение отредактировал(а) tishaishii - 23.10.2010, 21:42 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
приведенные лайки тоже не используют, но регексп предпочтительнее, если у нас разделителем может являться не только пробел: "Абу-т-Тайиб Абу-Салим аль-Мутанабби",'Мамин-Сибиряк'. А возможность использования fulltext я не оспариваю. Однако, как уже было замечено, fultext нельзя исползьзовать на InnoDb, да и на мылых объемах обоснованость его применения - условна. ТС не спрашивает как ускорить like, он спрашивает как его реализовать. Значит, полагаю, производительность like его устраивает. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |