| | Я пробовал писать поисковую систему для сайтов своего района.
Что имел: 400 урлов сайтов своего района. От визиток до порталов и магазинов.
С чего начинал:
Визуально осматривал сайт на предмет страниц, не нужных к индексации (страницы добавления объявлений, каких-то данных...), что бы добавить их в "серый список".
1. Импортируем содержимое главной страницы. Снимаем хэш md5() общих полученных данных.
2. Вычленяем TITLE, meta_keywords, meta_description (они имеют ооочень весомый показатель).
3. Вычленяем все ссылки, за исключением всех внешних, сессионных, mailto. В общем остаться должны только чистенькие уникальные для этой страницы ссылочки без сессионных параметров и подобной грязи. Проверяем полученный линки на присутствие в "сером списке", и если все нормально, пишем линки БД.
К сведению: после обработки главной страницы одного городского портала я получил 50 ссылок внутрь сайта.
3. Очищаем контент от тэгов, жаба_скриптов, коротких слов, от их дубликатов, от комментариев и всё, что в них заключено, от знаков препинания, рекламы (если получится). В итоге у меня оставались уникальные для этой странички, не короче 3-4 символов словечки на родном языке.
4. Снимаем повторно хэш md5() того, чего у нас осталось.
Записываем в БД всё, что у нас получилось: домен, титл и теги, оба хэша, дату индексирования и параметр показателя успешности. Записываем это всё для ссылки на главную страницу сайта.
Теперь извлекаем по очереди из БД полученные ссылочки и производим повтор всех операций. Но теперь уже, все полученные ссылки на страницы сайта, оба хэша мы должны сравнивать с уже имеющимися в нашей БД, что бы избежать дублирования информации.
Можно еще перед записью в БД посчитать количество элементов массива с контентом, и если их подозрительно мало, можно не записывать, т.к. возможно это какие либо служебные и вспомогательные страницы, никоим образом не интересны для пользователей, ищущих информацию.
После «первого прохода» у нас получится огромное количество ссылок (у меня, на примере того же портала вышло порядка 1500 ссылок).
С ними проводим те же операции, не забывая проверки на дубликаты.
Так мы получим индекс одного сайта.
Можно еще написать какие нибудь искалки ненужного «грязного» контента. Можно прогнать контент по списку стоп-слов и т.п.
И так каждый сайт. Потом, по истечению некоторого времени можно будет переиндексировать страницы. Просто импортировать и сравнивать хэши. Но, в наше время динамических сайтов, оооочень мала вероятность совпадения хэшей, т.к. очень много слишком велика скорость ротации данных на страницах (говорю, не подразумевая сайты-визитки и т.п. мелочь).
Лично я отказался от этой затеи, т.к. не располагал серверными мощностями.
К сведению – БД после индексирования городского портала (каталог фирм, объявления, знакомства, форум, каталог сайтов, фотогалереи…), 2-х сайтов по недвижимости (БД объктов недвижимости, обзоры, статьи), сайта местного провайдера (форум, мануалы, обзоры софта и медиа) и нескольких домашних страничек раздулась до 200 МБ.
Я не стану говорить сколько будет после индексации всех 400 сайтов ( в моем случае) и о систематических нагрузках сервера (помните о переиндексации через какое-то время)…
Естественно этот механизм не подразумевает никакой морфологии, т.к. контент набивается пословно и теряется связь между словами, но как поисковичек на местном уровне самое оно -) | |