【问题标题】:Design Question for Notification System通知系统的设计问题
【发布时间】:2011-05-17 02:27:23
【问题描述】:

原帖发在https://stackoverflow.com/questions/6007097/design-question-for-notification-system

以下是对问题的更多说明:通知系统的目的是在网站内容发生更改或更新或发布新帖子时(目前通过电子邮件)通知用户。这可以被视为一个通知系统,人们在其中为 3rd 方站点定义规则或关键字,并且通知系统会爬取 3rd 方站点并创建搜索反向索引。然后为用户定义的关键字或规则显示一个新的链接或文档(关于用例的更多解释),

对于澄清的用例:假设我是 craigslist 用户并正在寻找二手车。我定义了一个规则“本田雅阁”,“年份” 1996 和价格范围从“2000 美元到 3000 美元”。

对于上述用例,最好的方法是什么,我如何利用开源技术(如 Apache Lucent、Apache Solr 和 Apache Nutch 以及 Apache Hadoop)来解决这个用例。 您可以构建搜索引擎并使用规则和关键字通知系统。我只需要一些关于如何集成这些开源包来解决用例的指示和帮助?

任何帮助和指针将不胜感激。我们需要三个重要的组件是:

1) 网络爬虫 2) 索引创建者 3) 规则或关键字 Mather

任何帮助将不胜感激。我指的是这个将 Nutch 和 Solr 集成在一起的 wiki http://wiki.apache.org/nutch/RunningNutchAndSolr

【问题讨论】:

  • 这是一个非常广泛的要求,不是一个容易回答的问题。我建议你提出一些更具体、更具体的问题。你开始实施这个系统了吗?您有任何特定的技术要求(即仅使用 java、mongodb 等)吗?

标签: algorithm search search-engine web-crawler


【解决方案1】:

您的问题是一个大问题,但我会试一试,因为我以前设计和实施过这样的系统。

忽略用户帐户管理,您的系统将需要提供以下方法:

  1. 检索新的潜在客户数据(网络蜘蛛)

  2. 从潜在客户数据中识别和提取相关结果(过滤)

  3. 收集、维护和组织结果(存储)

  4. 根据各种元数据选择结果(查询)

  5. 格式化结果以交付给用户(模板)

  6. 向用户交付格式化结果(交付)

如果您的项目范围很小(比如说每天需要爬虫的网站少于 100 个),您可能会使用包括 wget、Nutch、WebSphinx 等在内的众多开源网络蜘蛛之一。您可能需要为调度、监控和控制提供仪器(定制软件)。如果您的项目范围大于此范围,您可能需要“推出自己的”爬虫解决方案(自定义软件)。通常,这将被设计为分布式并行架构。

对于简单的过滤,正则表达式就足够了,但对于需要了解 HTML 布局的更复杂的任务(提取页面上第四个表格的第五个列表元素 (<LI/>) 的文本组件),您需要使用XHTML 解析器。无论您如何继续,您都需要提供自定义软件来根据您的用户需求进行过滤。

虽然任何数据库技术都可用于存储从检索到的文档中提取的结果,但使用针对文本优化的引擎(如 Apache SOLR)将允许您根据需要轻松扩展搜索条件。由于 SOLR 支持附加和搜索与每个文档相关联的元数据,因此它将是一个不错的选择。您还需要在此处提供自定义软件来自动执行此步骤。

一旦您从 SOLR 中选择了候选结果列表,任何脚本语言都可以用于将它们模板化到一封或多封电子邮件中,并且还将它们注入您的邮件传输代理 (MTA)。这也需要定制软件来自动化这个过程(如果需要,将用户特定的数据注入每条消息)。

【讨论】:

    【解决方案2】:

    在开始自己抓取网络之前,您可能还应该查看 Google 的自定义搜索 API。这样,google 可以帮助您返回基于关键字的搜索结果,您可以稍后根据您的其他算法/规则等在您的应用程序中过滤这些结果,并使整个工作正常。

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2016-01-25
      • 2010-11-21
      • 2020-05-02
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2011-12-26
      • 2011-04-19
      相关资源
      最近更新 更多