Подскажите, как лучше организовать поиск на сайте

IPConfig

Новичок
Подскажите, как лучше организовать поиск на сайте

Есть проект.

Контент на сайте разнобразный, находится в разных таблицах mysql.

Некоторые из них:
По шаблону: [Таблица - поля, для, поиска]

Диалоги - название, сам диалог, описание после
Грамматика - Название, контент
Игры - Название
Статьи - Название, контент
Новости сайта, Обзоры сайтов - Название, контент
Рассказы - Название, контент
Топики - Название, контент, вопросы, слова
Учебники - Название, описание
Программы - Название, описание
Аудиокниги - Название, описание
Тесты - названия
Тексты песен - название, контент


Как лучше составить из этого поиск?)

Сделать поиск по одной таблице не составляет труда, а тут вот стал вопрос. Не знаю.=((
 

A-Lex[FM]

Web/Highload/DataScience
ahilles
Сам то понял куда человека отправил? Это статья о том, как просто реализовать поиск, а это он, судя по топику, знает.

IPConfig
Я могу посоветовать 2 решения:
1. Индексная таблица для всего сайта, например
| id | table | record_id | title | article |
Сваливаешь в эту таблицу информацию из тех полей тех таблиц, по которым хочешь делать поиск и получаешь поиск по одной таблице
2. UNION
Делаешь запросы во все таблицы, например
SELECT t1.id, t1.title, t1.article FROM table1 AS t1 WHERE t1.title LIKE 'blah-blah-blah%' OR t1.article LIKE 'blah-blah-blah%'
UNION
SELECT t2.id, t2.title, t2.article FROM table2 AS t2 WHERE t2.title LIKE 'blah-blah-blah%' OR t2.article LIKE 'blah-blah-blah%'
UNION ...

и так далее, главное выбирай одинаковое колличество столбцов и давай им одинаковые имена, если нет столбца выбирай NULL или ''

Например
SELECT t1.id AS id, NULL AS title, t1.article AS article FROM table1 AS t1 WHERE t1.title LIKE 'blah-blah-blah%' OR t1.article LIKE 'blah-blah-blah%'
UNION
SELECT t2.id AS id, t2.title AS title, t2.article AS article FROM table2 AS t2 WHERE t2.title LIKE 'blah-blah-blah%' OR t2.article LIKE 'blah-blah-blah%'

и будет тебе счастье
 

AmdY

Пью пиво
Команда форума
Действительно юнион замечательный выход, а если использовать 5-й мускул есть ещё лучше.
 

IPConfig

Новичок
Большое спасибо, UNION действительно хороший способо, но как обстоят дела с нагрузкой, если в UNION включить таблиц эдак 10?
 
Сверху