![]() |
|
![]() ![]() ![]() |
|
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
был бы признателен, если кто поделился какой-путёвой интермацией, а не первым линком из гоогля..
![]() пасиба ![]() Добавлено через 4 минуты и 1 секунду http://www.turtle.ru/db/architecture/3_5.html |
|||
|
||||
fse |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 28.9.2007 Где: г. Рязань Репутация: нет Всего: 1 |
Привет. На мой взгляд так далеко непростая задача. Никакой толковой информации не видел по этому в инете, хотя интересовался.
Посему, начал писать с нуля, не сложного поискового робота. Поделюсь соображениями. Поисковики знают адреса сайтов, много URL. И для каждой страницы сохраняют её название и текст. Далее, как я понимаю, по запросу пользователя, поисковик ищет наибольшее совпадение текста запроса и в тексте всех страниц. Как я понимаю, это один из самых требовательных процессов... Наверно для ускорения можно придумать систему хеширования запросов. И систему рейтинговости (очередь из наиболее часто востребованных сайтов), чтобы не искать из ВСЕЙ базы данных. Что-то вроде... Но основной вопрос - ОТКУДА робот знает столько URL? Из двух источников. 1. Сами авторы регистрируют свои сайты в поисковиках, это выгодно в первую очередь им... 2. Автоматическое сканирование сайтов. Я писал однажды программу подобную. Жаль инет дорогой, так бы проиндексировал побольше сайтов, интересное занятие... Программа по сути состояла из трёх частей: - HTML-парсер, который разделяет контент и теги со всеми ссылками (внешними и внутренне-сайтовыми) - Сетевая часть (скачка HTML-содержимого по его URL) - Логика программы: Вводится начальный адрес. Эта страница анализируется, внешние ссылки добавляются в очередь анализа, анализуются внутренние ссылки на некоторую глубину, переход к следующему сайту в очереди. И цикл повторяется. По многим наблюдениям, все поисковики работают именно так! Кстати... Подобный "домашний" поисковик может стать настоящим подарком спамера... Т.к. может и ящики находить... Что печально... |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: нет Всего: 8 |
fse, то, что ты описал всё о общих чертах.. я не перечёркиваю всю, даже грю спасибА за поддержку темы ![]() по сути дела, тут "всего одна" трабла => смысловой поиск по системе и поиск с коректировкой.. это меня больше всего интересует ![]() индескирование страниц просто сделать.. другое, если юзер наберёт "машинЫ", вместо "машина", нужно вытащить, и машина, и машины, и "машинёшки".. вот тут-то и начинается трабла по моему.. нужно писать некий парсер на какой-то язык и, возможно, плясать не только от граматики... ![]() |
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
Недавно передо мной встала такая же задача. Нужно проиндексировать как можно сайтов. И тоже проблема с грамматикой. Я вот думаю может к этому как-то можно расстояние Левенштейна прикрутить, но как пока не придумал. Не считать же при каждом поиске для каждого слова. Да и хранить такие объёмы данных не получиться.
-------------------- MaXL |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Ну могу предложить такой вариант. Некто yandex.ru вроде как регулярно организует такие мероприятия (по-моему, даже есть какие-то "школы"), на которых рассказывает о своей поисковой системе, ну вероятно чем "дальше" пройдёшь по ихним мероприятиям - тем больше узнаешь
![]() Я как-то случайно попал на подобное, и было весьма интересно послушать их алгоритмы, даже в общих чертах всё понятно было, но, к сожалению, я не смогу здесь восстановить хотя бы примерно их алгоритмы. Ну ладно, попробую. Примерно такое вот: По каждому слову есть список сайтов, в которых оно присутствует. Эти гигантские списки распределены между несколькими компами во внутренней сети поисковика, разумеется, там хитрая система над-серверов, которые кэшируют таблички и уменьшают нагрузку на сеть. Далее, поступает запрос. Он обрабатывается, что-то типа того, что все слова приводятся в "нормальную" форму, предлоги выкидываются. Затем по каждому слову отдельно выполняется поиск (фактически - просто в сетку пускается запрос по такому-то слову, в ответ приходит табличка с сайтами по этому слову, естественно, не всеми, а что-то типа top-200). Затем значит обратно возвращается результат - куча таких списков. Их надо умно помёржить, с учётом структуры исходного запроса. По этому поводу было сказано почти ничего, я думаю, здесь много всяких нахаченных алгоритмов. Ну и при мёрже, да и при выборе top-200, надо уметь сравнивать два сайта. Система такая. У каждого сайта (конкретной страницы) есть перечень атрибутов, сейчас в яндексе их уже порядка сотни, и эти атрибуты - коэффициенты страницы, конкретные её характеристики. Затем по хитрой формулке с другими коэффициентами C1, ..., Cn эти атрибуты объединяются в одно число - общая характеристика страницы, по которой собственно они и сортятся. Ну а сама формулка - судя по всему, даже не полином, ну короче что-то достаточно хитрое и хаченное ![]() Вот примерно так ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |