Проектный вопрос для системы уведомлений - PullRequest
0 голосов
/ 16 мая 2011

Исходное сообщение было размещено на https://stackoverflow.com/questions/6007097/design-question-for-notification-system

Вот еще одно разъяснение проблемы: Цель системы уведомлений состоит в том, чтобы уведомлять пользователя (на данный момент по электронной почте), когда содержание сайта изменилось или обновилось, или появилась новая публикация. Это можно рассматривать как систему уведомлений, в которой люди определяют правило или ключевое слово для стороннего сайта, а система уведомлений сканирует сторонний сайт и осуществляет поиск инвертированных индексов поиска. Затем появляется новая ссылка или документ для определенного пользователем ключевого слова или правила (более подробное объяснение внизу относительно варианта использования),

Для уточненного использованного случая: Предположим, я пользователь Craigslist и ищу подержанный автомобиль. Я определяю правило «Хонда аккорд», «1996 год» и диапазон цен от «2000 до 3000 долларов».

Для приведенного выше варианта использования, чтобы работать с наилучшим подходом и как я могу использовать технологии с открытым исходным кодом, такие как Apache Lucent, Apache Solr и Apache Nutch и Apache Hadoop, для решения этого варианта использования. Вы можете создать поисковую систему и с помощью системы правил и ключевых слов. Мне просто нужны некоторые указатели и помощь в том, как интегрировать эти пакеты с открытым исходным кодом для решения варианта использования?

Любая помощь и указатель будет оценен. Нам нужны три важных компонента:

1) Web Crawler 
2) Index Creator  
3) Rule or keyword Mather

Любая помощь будет принята с благодарностью. Я имел в виду эту вики, которая объединяет Nutch и Solr вместе для вышеуказанной цели http://wiki.apache.org/nutch/RunningNutchAndSolr

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Ваш вопрос большой, но я постараюсь ответить на него, так как раньше проектировал и внедрял подобные системы.

Игнорируя управление учетными записями пользователей, ваша система должна будет предоставить следующие средства:

  1. получение новых данных о перспективах (веб-паук)

  2. выявление и извлечение соответствующих результатов из данных о перспективах (фильтрация)

  3. сбор, ведение и организация результатов (хранение)

  4. выбор результатов на основе различных метаданных (запрос)

  5. формат результатов для доставки пользователям (шаблонизатор)

  6. доставка отформатированных результатов пользователям (доставка)

Если объем вашего проекта небольшой (скажем, менее 100 сайтов, требующих паутинга в день), вы, вероятно, могли бы ужиться с одним из многих веб-пауков с открытым исходным кодом, включая wget, Nutch, WebSphinx и т. Д. предоставить инструментарий (специальное программное обеспечение) для планирования, мониторинга и контроля. Если объем вашего проекта больше, чем это, вам может понадобиться «накатить свое» решение для паутинга (специальное программное обеспечение). Обычно это проектируется как распределенная параллельная архитектура.

Для простой фильтрации достаточно регулярных выражений, но для более сложных задач, требующих знания макета HTML (извлеките текстовый компонент пятого элемента списка (<LI/>) четвертой таблицы на странице), вам нужно использовать синтаксический анализатор XHTML. Однако в дальнейшем вам нужно будет предоставить специальное программное обеспечение для фильтрации по потребностям ваших пользователей.

Хотя для хранения результатов, извлеченных из извлеченных документов, можно использовать любую технологию базы данных, использование механизма, оптимизированного для текста, такого как Apache SOLR, позволит вам легко расширять критерии поиска в соответствии с вашими потребностями. Так как SOLR поддерживает вложение и поиск метаданных, связанных с каждым документом, это будет хорошим выбором. Вам также потребуется предоставить специальное программное обеспечение для автоматизации этого шага.

После того, как вы выбрали список кандидатов в SOLR, любой язык сценариев можно использовать для шаблонирования их в одно или несколько электронных писем, а также вставлять их в ваш почтовый агент (MTA). Для этого также требуется специальное программное обеспечение для автоматизации этого процесса (и, при необходимости, для ввода пользовательских данных в каждое сообщение).

0 голосов
/ 16 мая 2011

Вам, вероятно, стоит взглянуть на API пользовательского поиска Google, прежде чем самим заняться сканированием Интернета. Таким образом, Google может помочь вам вернуть результаты поиска на основе ключевых слов, которые вы позже могли бы отфильтровать в своем приложении на основе ваших дополнительных алгоритмов / правил и т. Д. И заставить все это работать.

...