Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

Теоретический вопрос. Не ясен принцип глобального поиска

Обсуждение темы Теоретический вопрос. Не ясен принцип глобального поиска в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Привет всем! Надеюсь с форумом не ошибся Итак. Ситуация такая. Допустим есть база с кучей таблиц с в который всяк. разный контент: статьи, ...


Закрытая тема
 
Опции темы
Старый 17.11.2008, 23:23   #1
Привет всем! Надеюсь с форумом не ошибся
Итак. Ситуация такая. Допустим есть база с кучей таблиц с в который всяк. разный контент: статьи, юзеры ну и т.д.

Ну дак вот! Наверняка все видели глобальные поиски. Взять хотя бы сей форум. Идешь в поиск, а там всего один input_text и кнопка. Написал туда что угодно и все. скрипт погнал искать во всех таблицах и выдает все, где мелькнёт ключевое слово.

Дав вот. Мне не совсем понятен принцип сего поиска. Как поиск ищет во всём?

Просто я ща изучаю ПХП и Мускл. Ну сделал я себе пару таблиц. Ну пишу я
PHP код:
SELECT FROM 'имя_таблици' where 'столбец' LIKE '%слово%' 
Но ведь это только для опеределённой таблици и для опред. столбца. Кроме того, привязанность к регистру .....

Вобщем. Прошу не посылать учить мат. часть и не писать, мол, ой да Вы молодой человек основ не знаете и т.д. Я собственно тему и создал чтоб понять принцип работы подобных поисков. Узнать дело именно в ПХП-скрипте или же трюк в какой-то особенной выборке в базе.....или может быть и то и другое и еще что-то третье?
Все это для того чтоб понять где копать и потом соответвенно прокачать свои знания
 
Старый 17.11.2008, 23:23
Ссылки
Старый 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` )
);
Когда мы что-то вставляем в одну из таблиц нашей системы, мы делаем запись и в таблице с индексом, в которой пишем в table_name — имя исходной таблицы (куда была вставлена запись), а key_id — ID первичного ключа записи.

Чтобы что-то найти делаем LIKE по text_data, выбираем все table_name, key_id, а по ним уже находим исходные записи из разных таблиц, которые и выводим.

P.S.: конкретно такая реализация, которую я здесь привёл, очень плохая и будет очень медленно работать. Использовать это в реальной системе нельзя ни при каких обстоятельствах — этот пример приведён только чтобы подсказать направление мыслей.
 
Старый 18.11.2008, 19:56
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём принцип 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


Текущее время: 08:53. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум