Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

поиск в базе данных

537
03 февраля 2003 года
Cover
87 / / 14.11.2002
Как сделать хороший поиск нескольких русских слов в mySQL базе без учета регистра?
250
05 февраля 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by Cover
Как сделать хороший поиск нескольких русских слов в mySQL базе без учета регистра?



http://www.xpoint.ru/archive/topic41/46/9379.html

2.4K
05 февраля 2003 года
L'Eglantier
21 / / 31.01.2003
Цитата:



Дело человек говорит. Или, если тебе не нужна релевантность, и ты не хочешь добавлять FULLTEXT поля и FULLTEXT индексы, можешь использовать функции CONCAT() и LCASE()
То-бишь, объединять поля в строку текста и перегонять в lowercase прямо в запросе. Но тогда разные окончания слов (напр. "поиск" и "поиска") попьют у тебя кровушки.

2.4K
06 февраля 2003 года
L'Eglantier
21 / / 31.01.2003
Тысячу извинений, последний апдейт к ответу.

Покрутил я сам эту функцию и так и этак. Фигня!
1. "Похожесть" слов по боку, что уже хуже, чем %LIKE%
2. Если нужное слово встречается в более 50% записей, оно игнорируется. С одной стороны правильно, а с другой, если база тематическая, то можно смело вешаться.
2.1. Это можно исправить пользуясь опцией IN BOOLEAN MODE, но она есть только начиная с версии 4.0.1
2.1.1. Даже, если тебе повезло, и у тебя 4.0.1., то искать фразы, содержащие арифметические знаки или даже просто - лучше не надо, чтобы не расстраиваться.

ergo
Этот способ годится для больших баз с кучей текста, желательно такого, чтобы пользователь ну хоть что-то получил в любом случае, и для точных словосочетаний.

Используй идею, которую я дал, как извращение.
537
06 февраля 2003 года
Cover
87 / / 14.11.2002
Ну вы даете. Я новый яндекс делать не собираюсь. Мне всего-то надо поиск по сайту (новости, форум и пр.) сделать.
А интересует меня 1)как искать, чтобы не было чувсвительности к регистру.
2)как искать много слов в одном запросе (кроме LIKE %smth% AND...) и без FULLTEXT
2.4K
06 февраля 2003 года
L'Eglantier
21 / / 31.01.2003
Цитата:
Originally posted by Cover
Ну вы даете. Я новый яндекс делать не собираюсь. Мне всего-то надо поиск по сайту (новости, форум и пр.) сделать.
А интересует меня 1)как искать, чтобы не было чувсвительности к регистру.
2)как искать много слов в одном запросе (кроме LIKE %smth% AND...) и без FULLTEXT



Так, ни с тем, ни с другим Яндекса и не получится. Почитай ту самую ссылку (вот она) там есть то, что тебе надо. Просто реализуется и выполняется в 1 запрос. Регистр оно не учитывает. Правда, штука довольно сырая...

Либо что-то вроде (или как иначе)

 
Код:
$text_to_find = strtolower($text_to_find);
$query = "SELECT поля FROM таблица
 WHERE
  LCASE(CONCAT fld1,' ',fld2,' ',.....,fldN))
  LIKE %$text_to_find%"
;
//Дальше соединяешься с базой и вытаскиваешь
.....


Свои глюки есть и у того метода и у другого. Подумать придется. Метод, описанный по ссылке, требует, чтобы поиск проводился либо по одному текстовому полю, на которое установлен FULLTEXT индекс, либо по группе полей, на которую он же установлен. NB не на каждое поле в отдельности, а один на вю группу полей.
537
07 февраля 2003 года
Cover
87 / / 14.11.2002
За LCASE спасибо, не знал про такое.
Может кто-нить знает и как отсортировать в алфавитном порядке с русскими буквами? MySQL по ходу русский не понимает или ещё что, но сортировать никак не хочет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог