![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
AlexxO |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 21.1.2004 Где: Belarus, Borisov Репутация: нет Всего: нет |
Думаю вот сделать нормальный поисковик для сайта, который бы искал не просто по совпадению запроса, а исчо и отдельные слова учитывал (если в запросе более одного слова). Вот как я представляю всю поисковую систему:
Имеется индексатор, который обрабатывает все страницы сайта, убирает при помощи stripslashes все тэги, заменяет где нужно лишние пробелы, табуляцию и т. д. вобщем всё неконтентное убирается... Затем из всего этого выделяются отдельные слова с параметром, обозначающим текущее положение слова в документе (порядковый номер слова или байт с которого начинается первый его символ), это слово складывается в таблицу примерно с такой структурой:
При поиске по двум и более словам мы простым запросом выбираем ряд с каждым словом по отдельности и смотрим на значения параметра position, чем меньше он отличаетя, тем выше выводим этот результат поиска и т. д. Конечно структура таблицы не годится ввиду того что одно слово может быть на нескольких страницах (да и встречаться несколько раз на одной странице) и было бы грамотно ещо одну таблицу завести в которой хранить урлы, но это не столь важно, главное сама идея... =) Выскажите плиз свою точку зрения по такому алгоритму поиска -- ИМХО скорость и эфективность его работы достаточно высока... Что думаете об этом? |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: нет Всего: 4 |
Надо две таблицы:
Таблица 1: word_id word Таблица 2: url word_id position -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: нет Всего: 10 |
stripslashes убирает экранирование символов, а теги убирает strip_tags
а теперь по теме... в поиске имхо не столь важна позиция слова, сколько частота его повторения на странице... это первое. второе - не столь важно количество совпавших слов сколь важна связка фразы искомой в поиске и если мы будем загонять весь контент на страницу и составлять запрос типа: разбиваем строку поиска на слова и ищем лайком через ор не только отдельные слова, но и группы слов, это и проще, и быстрее и качественнее. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Имхо просто делаем полнотекстовый индекс и не изобретаем велосипед
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: нет Всего: 4 |
Akina
ты не прав. Полнотекстовый индекс имеет много ограничений. Ну хотя бы невозможность поиска по части слова. -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |