Mary Kravets
Новак
Повідомлень: 16
Зареєстрований: 16-5-2007
Місто: Львів
Нема на форумі
Настрій: веб-девелопер
|
|
Пошук у MySql
Відомо, що в MySql можна шукати по частинах слів. Коли потрібно знайти по першій
частині слова, запит пошуку формується приблизно так:
SELECT name, addr FROM posts WHERE MATCH (name,addr) AGAINST ('слово*' IN BOOLEAN MODE)
А що робити, коли потрібно знайти по закінченню слова( типу на запит "ицтво"
результатами будуть "будівництво" і т.п. )?
Перечитала купу доки і так і не знайшла.
Правда, є варіанти типу LIKE або REGEXP...
Поділіться, будь-ласка, досвідом. Буду дуже вдячна
Безликий час такий-собі. Ніщо запанувало світом. (с) Олесь Дяк
|
|
Юрій Сєров
Модератор
Повідомлень: 10460
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: оптимістичний
|
|
А чим Вам не подобається ?
SELECT name, addr FROM posts WHERE name LIKE "%ицтво"
|
|
Mary Kravets
Новак
Повідомлень: 16
Зареєстрований: 16-5-2007
Місто: Львів
Нема на форумі
Настрій: веб-девелопер
|
|
та я так і думаю, просто підозри були, що в запиті пошуку це можна зробити. + пошук
працює швидше ніж LIKE
Безликий час такий-собі. Ніщо запанувало світом. (с) Олесь Дяк
|
|
Mary Kravets
Новак
Повідомлень: 16
Зареєстрований: 16-5-2007
Місто: Львів
Нема на форумі
Настрій: веб-девелопер
|
|
+ до того всього LIKE зручний тільки у випадку малої к-сті полів. А якщо таким чином
потрібно шукати по 10 полям? Тут вже буде тормозить Або в випадку LIKE і 10 полів розбивати пошук по полях, наприклад : юзер з
випадного списку вибирає, шукати по назві\адресі чи по опису.
|
|
Юрій Сєров
Модератор
Повідомлень: 10460
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: оптимістичний
|
|
Можливо тоді краще загнати всю таблицю в масив і в ній вже шукати засобами PHP чи
Perl-а ?
|
|
Mary Kravets
Новак
Повідомлень: 16
Зареєстрований: 16-5-2007
Місто: Львів
Нема на форумі
Настрій: веб-девелопер
|
|
це буде неефективно при великій кількості рядків у таблиці. В мене десь під 5000.
Краще LIKE + там зберігаються трошки довгі
тексти... Короче багато памяті пхп забере
Але мені дивно: ну як же команда Mysql додумалась зробити пошук по початку слова
(слово*) і не додумалась зробити по закінченню (*слово), або так як в like %слово%.
Мабуть така фіча ще у списку TODO
Безликий час такий-собі. Ніщо запанувало світом. (с) Олесь Дяк
|
|
Андрій Пелещишин
Адміністратор
Повідомлень: 9191
Зареєстрований: 19-6-2002
Місто: Львів, Україна
Нема на форумі
Настрій: Настрій не вказаний
|
|
Цитата: | ну як же команда Mysql додумалась зробити пошук по початку слова (слово*) і не
додумалась зробити по закінченню (*слово), |
Думаю, команд MySql ще дуже багато чого не зробила, щоби хоча би наблизитися до
нормальних СКБД.
Користайтесь LIKE - принаймні збережеться імовірність переносимості коду на інші
платформи.
|
|
Тарас Гулка
Академік
Повідомлень: 899
Зареєстрований: 19-6-2002
Місто: м.Львів, Україна
Нема на форумі
Настрій: стабільний
|
|
Якщо хочеться наваротів і великої швидкості то можна використовавати зовнішні
рішення
Наприклад, Sphinx- open-source SQL full-text search engine ( http://sphinxsearch.com/ ) . Сам не користав, але читав дуже позитивні відгуки.
|
|