Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Красивый алгоритм поиска

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как правильно?
Botkin
Отправлено: 15 Ноября, 2013 - 18:11:50
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Вот задался вопросом, как же правильно написать поиск по сайту? Предположим есть N таблиц с разными сущностям. Все они должны использовать в поисковой выдаче. Как получить ключевое слово поиска понятно. Далее юзаем LIKE
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM `table_name` WHERE `name` LIKE $query OR `text` LIKE $query
  3.  

Такой вариант прокатит например если у нас 5 таблиц. А как быть в случае, когда таблиц к примеру 80? Подскажите правильный и корректный алгоритм написания поиска )

(Отредактировано автором: 15 Ноября, 2013 - 18:12:30)

 
 Top
teddy
Отправлено: 15 Ноября, 2013 - 18:25:19
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Ну вообще для нормального поиска используется FULLTEXT
погуглите "Полнотекстовый индекс MySQL"
Botkin пишет:
когда таблиц к примеру 80?

если вы ищите по 80 таблицам то догадываюсь что то делаете не так... по группам инфу разделите и сделайте так чтоб использовалось как можно меньше таблиц, ну и по каждой таблице свой поиск, если инфа огромная и по логике она должна лежать в разных таблицах. Я на своем пути хоть и небольшом более 1 таблицы для поиска не встречал... Если их все же 80, то думаю надо пересмотреть логику

(Отредактировано автором: 15 Ноября, 2013 - 18:33:38)

 
 Top
Botkin
Отправлено: 15 Ноября, 2013 - 18:38:28
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




teddy, число 80 я привел с потолка, просто для того чтобы было понятна вся абсурдность применения описываемого мной подхода. ) А за ответ большое спасибо - это именно то, что я искал ) Плюсануть пока не могу, постов мало ((
 
 Top
Ch_chov
Отправлено: 15 Ноября, 2013 - 18:40:22
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Botkin пишет:
А как быть в случае, когда таблиц к примеру 80?
Сделать поисковый индекс в отдельной таблице. И периодически его обновлять. А еще лучше использовать готовые решения: sphinx, apache solr и т.д.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB