|
Теоретический вопрос. Не ясен принцип глобального поискаОбсуждение темы Теоретический вопрос. Не ясен принцип глобального поиска в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Привет всем! Надеюсь с форумом не ошибся Итак. Ситуация такая. Допустим есть база с кучей таблиц с в который всяк. разный контент: статьи, ... |
|
Опции темы |
17.11.2008, 23:23 | #1 |
|
Привет всем! Надеюсь с форумом не ошибся
Итак. Ситуация такая. Допустим есть база с кучей таблиц с в который всяк. разный контент: статьи, юзеры ну и т.д. Ну дак вот! Наверняка все видели глобальные поиски. Взять хотя бы сей форум. Идешь в поиск, а там всего один input_text и кнопка. Написал туда что угодно и все. скрипт погнал искать во всех таблицах и выдает все, где мелькнёт ключевое слово. Дав вот. Мне не совсем понятен принцип сего поиска. Как поиск ищет во всём? Просто я ща изучаю ПХП и Мускл. Ну сделал я себе пару таблиц. Ну пишу я PHP код:
Вобщем. Прошу не посылать учить мат. часть и не писать, мол, ой да Вы молодой человек основ не знаете и т.д. Я собственно тему и создал чтоб понять принцип работы подобных поисков. Узнать дело именно в ПХП-скрипте или же трюк в какой-то особенной выборке в базе.....или может быть и то и другое и еще что-то третье? Все это для того чтоб понять где копать и потом соответвенно прокачать свои знания |
|
18.11.2008, 04:32 | #2 |
|
Вариантов поиска по куче таблиц, как минимум, два:
1. Сделать столько запросов, сколько таблиц у нас есть; 2. Сделать отдельную таблицу, содержащую информацию из всех других таблиц и ссылки на них (этакий индекс), и искать по нему. Что до регистра, то есть функция LOWER(). P.S: клёвый аватар, ага |
|
18.11.2008, 17:37 | #3 |
|
deMone, Ах вот оно как.. Хмм тоесть получается что сначала я узнаю общее кол-во таблиц, потом узнаю кол-во столбцов для каждой таблици. Получается, что один цикл идет по таблицам, а второй по столбцам и и щет в них искомое значение...так ? Или я опять что-то упустил
|
|
18.11.2008, 19:56 | #4 |
|
Нет, вы что-то путаете. Делаем так:
Код:
CREATE TABLE `search_index` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `table_name` VARCHAR( 40 ) NOT NULL , `key_id` INT NOT NULL , `text_data` MEDIUMTEXT NOT NULL , PRIMARY KEY ( `id` ) ); Чтобы что-то найти делаем LIKE по text_data, выбираем все table_name, key_id, а по ним уже находим исходные записи из разных таблиц, которые и выводим. P.S.: конкретно такая реализация, которую я здесь привёл, очень плохая и будет очень медленно работать. Использовать это в реальной системе нельзя ни при каких обстоятельствах — этот пример приведён только чтобы подсказать направление мыслей. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В чём принцип Sidebar - боковая панель для сайта | kostia | ASP, Perl, PHP и MySQL | 18 | 19.10.2011 16:59 |
JavaScript для поиска данных в текстовых БД - Вопрос по скрипту | tatka | HTML, CSS, JavaScript | 1 | 18.06.2010 02:23 |
Горизонтальное flash меню. Не могу понять принцип работы | volFernion | Технологии Flash | 14 | 01.05.2009 19:28 |
форма поиска | Dims | HTML, CSS, JavaScript | 6 | 21.02.2008 15:05 |
Проблема поиска | Rem@x | HTML, CSS, JavaScript | 5 | 06.04.2004 22:41 |
Реклама на форуме
Условия размещения рекламы
Биржа ссылок
Заработай на сайте!
|