LINUX.ORG.RU

Прокомментируйте архитектуру проекта и сам проект.


0

1

Проект по большому счёту никому не нужен и легко задавливается гуглом.

Форумный поисковик. У гугла уже есть «искать по обсуждениям».

Назначение - искать сообщения на форумах. В основе лежит программа, умеющая с HTML-страницы с сообщениями форума достать эти сообщения в виде отдельных plain-text кусков. Каждое сообщение будет выглядеть как структура - само сообщение, автор, ссылка на профиль автора, время, и т.п. Со страницы списка топиков форума программа достаёт список топиков в виде списка строк.

Делается приложение клиент и сервер. Сервер устанавливается у нас, а клиент (для винды и линукса) свободно распространяется. Работа наподобии проекта «majestic12».

Клиент делает запрос на сервер, получает адрес конкретной страницы, скрипт на языке tagstractor (http://ymap.org/prog/tt/) для её обработки и список переменных, которые сервер ждёт от него после обработки. Тэгстрактор это или нет - пофиг, хоть регэкспы, суть не в этом.

Клиент имеет собственную БД с пом. которой умеет отправлять на сервер только новые данные. Хотя, это можно считать преждевременной оптимизацией и, возможно, никому хуже не будет, если клиенты будут тупее - просто грабить сообщения со страницы и отправлять награбленное.

Вся работа по закачке HTML-страниц переносится на клиентов, а сервер получает от них только свежевыжатый сок.

В плане поиска данных на веб-страницах гугл более туп и поэтому более устойчив и живуч, а моя система более тонка и рассыпется быстрее. Тонкость в том, что каждый конкретный сайт нуждается в том, чтобы под него вручную был настроен фильтр. Фильтр - это то, что парсит HTML и выдаёт набор голых сообщений или имён топиков с форума. Фильтр может быть невелик по объёму (на языке tagstractor код выгребания списка топиков с лора занимает 25 строк и 621 байт, выгребание сообщений с умением не запинаться об их переменчивую вёрстку - 2 КБ). Смысл этого в различении текста сообщений на html-страницах, чтобы серверу передать только сок без кожуры.

Клиент запускается, просит у сервера задание. Сервер отправляет ему урл и TT-скрипт для разбора страницы с этого урла. В ответ сервер получает массив строк, каждая из которых - это, например, мессага на форуме.

Сервер вычисляет хэш от каждой мессаги, чтобы сравнить с другими хешами и проверить мессагу на уникальность. Ну это уже детали...

Периодически сервер запускает пересчёт индекса в какой-нибудь там базе, используя какой-нибудь там sphinx или что-то такое...

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

Ясно, что всё это «не нужно и фтопку», что много где есть RSS, но интерес какой-то есть. Старая версия базы, составленная из выдернутых топиков с разных сайтов - http://ymap.dyndns.org/

>Вся работа по закачке HTML-страниц переносится на клиентов, а сервер получает от них только свежевыжатый сок.<br>

Мелко как. Научите клиентов еще таким вещам: ctrl+f по странице, ну и поисковики на форумах, пущай шлют вам уже результаты поисковых запросов!

Ну, и «клиент (для винды и линукса) свободно распространяется» это хорошо. Да, это ок. Это в век Вебдваноль....

Shtucer
()
Ответ на: комментарий от Shtucer

Клиенты - это не пользователи сервиса, а роботы, установленные на разных машинах. Они являются медленными асинхронными собирателями и не могут быть участниками процесса быстрого поиска. Они медленно скребут и сладут результат в базу, связываясь с центральным сервером.

Под клиентом понимается робот, периодически по заданиям сервера выжимающий соки с разных страниц. То есть, речь не идёт о некотором ПО, необходимом для пользования сервисом.

kiverattes ★☆
() автор топика

неосиленны веб-технологии ? XQuery, XSLT

curl+tidy+xsltproc = ваш клиент в 2-3 строки

MKuznetsov ★★★★★
()
Ответ на: комментарий от Shtucer

Они клиенты для управляющего сервера, а для людей слово другое - пользователи )

неосиленны веб-технологии ? XQuery, XSLT

Ну если километровые строки, то да, 2-3. А чё стесняться, можно и в 1 всё написать.

kiverattes ★☆
() автор топика

Я бы выделил след сущности:

1. Готовая база. То что вы назвали сервером.

2. Пауки. То что вы назвали клиентом.

3. Вспомогательный сервис для распределения задач. К нему обращаются пауки при окончании задач, и тот выдает им задание(может сразу пакет заданий). Он же получает «сок», который льет в базу(и/или в индексатор).

4. Морда к базе. Которая для «человеков». Оно же фронтенд.

5. Морда к базе, которая для персонала. Оно же бекенд.

Физически все может быть как на одной машине так и на нескольких. Наиболее узкое место - вспомогательный сервер. Через полгода задумаетесь как бы его распараллелить(например само индексирование «сока» можно запускать на отдельных хостах).

roller ★★★
()
Ответ на: комментарий от roller

Да, еще:

Для общения всех частей между собой я бы использовал вспомогательную базу, никаких кастом-мега-клиент-серверных решений. В ней просто лежали бы задачи, их результаты, статус и т.д.
Клиент по освобождению лезет туда и цапает свободную задачу, потом дописывает в нее результат. Сервис по получении результата анализирует его и льет в основную базу.

roller ★★★
()

> сообщения в виде отдельных plain-text кусков

а если они в виде хтмл, как на ЛОРе допустим

Ясно, что всё это «не нужно и фтопку», что много где есть RSS, но интерес какой-то есть.

прямой интерес есть к базе для парсинга форумов

+ возможно, имеет смысл складывать распарсенное и оттдавать в формате nntp, что гугль вроде пока не делает

для ЛОРа такой проект был (искать видимо по nntp)

меня особенно интересует парсинг ЖЖ с его идиотскими подгружаемыми комментами — и скорее всего, это потребует изменение модели твоего парсера

если интересно общаться на эту тему, дай твой жаббер

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

peorg@jabber.org - если отвечу не сразу, значит скоро приду и отвечу )

kiverattes ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.