Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> алгоритм поиска по БД, оцените... 
:(
    Опции темы
AlexxO
  Дата 8.8.2005, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 21.1.2004
Где: Belarus, Borisov

Репутация: нет
Всего: нет



Думаю вот сделать нормальный поисковик для сайта, который бы искал не просто по совпадению запроса, а исчо и отдельные слова учитывал (если в запросе более одного слова). Вот как я представляю всю поисковую систему:

Имеется индексатор, который обрабатывает все страницы сайта, убирает при помощи stripslashes все тэги, заменяет где нужно лишние пробелы, табуляцию и т. д. вобщем всё неконтентное убирается... Затем из всего этого выделяются отдельные слова с параметром, обозначающим текущее положение слова в документе (порядковый номер слова или байт с которого начинается первый его символ), это слово складывается в таблицу примерно с такой структурой:

Цитата

id -- id он и в африке id =)
url -- страница (страницы) где оно было найдено
word -- слово
position -- позиция слова


При поиске по двум и более словам мы простым запросом выбираем ряд с каждым словом по отдельности и смотрим на значения параметра position, чем меньше он отличаетя, тем выше выводим этот результат поиска и т. д. Конечно структура таблицы не годится ввиду того что одно слово может быть на нескольких страницах (да и встречаться несколько раз на одной странице) и было бы грамотно ещо одну таблицу завести в которой хранить урлы, но это не столь важно, главное сама идея... =)
Выскажите плиз свою точку зрения по такому алгоритму поиска -- ИМХО скорость и эфективность его работы достаточно высока... Что думаете об этом?
PM MAIL WWW ICQ AOL YIM MSN   Вверх
Song
Дата 9.8.2005, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: нет
Всего: 4



Надо две таблицы:

Таблица 1:

word_id
word

Таблица 2:
url
word_id
position


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Master
Дата 17.8.2005, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: нет
Всего: 10



stripslashes убирает экранирование символов, а теги убирает strip_tags

а теперь по теме... в поиске имхо не столь важна позиция слова, сколько частота его повторения на странице... это первое.
второе - не столь важно количество совпавших слов сколь важна связка фразы искомой в поиске
и если мы будем загонять весь контент на страницу и составлять запрос типа: разбиваем строку поиска на слова и ищем лайком через ор не только отдельные слова, но и группы слов, это и проще, и быстрее и качественнее.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Akina
Дата 17.8.2005, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Имхо просто делаем полнотекстовый индекс и не изобретаем велосипед


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Song
Дата 19.8.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: нет
Всего: 4



Akina
ты не прав.
Полнотекстовый индекс имеет много ограничений.
Ну хотя бы невозможность поиска по части слова.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.