原帖发布于https://stackoverflow.com/questions/6007097/design-question-for-notification-system
这里是对问题的更多澄清:通知系统的目的是在网站内容更改或更新或发布新帖子时通知用户(目前通过电子邮件)。这可以被视为一个通知系统,人们在其中为第 3 方站点定义规则或关键字,然后通知系统开始爬行第 3 方站点并创建搜索倒排索引。然后为用户定义的关键字或规则显示一个新的链接或文档(关于用例的更多解释在底部),
为了澄清用例:假设我是 craigslist 用户并正在寻找二手车。我定义了一个规则“Honda accord”,“year”1996 和 price range from“$2000 to $3000”。
对于上述用例,最佳方法是什么?我如何利用 Apache Lucent、Apache Solr 和 Apache Nutch 以及 Apache Hadoop 等开源技术来解决这个用例。 您可以构建搜索引擎并使用规则和关键字通知系统。我只需要一些关于如何集成这些开源包来解决用例的指导和帮助?
任何帮助和指示将不胜感激。我们需要三个重要的组件是:
1) Web Crawler 2) Index Creator 3) Rule or keyword Mather
任何帮助将不胜感激。我指的是这个将 Nutch 和 Solr 集成在一起用于上述目的的 wiki http://wiki.apache.org/nutch/RunningNutchAndSolr
最佳答案
你的问题很大,但我会尝试一下,因为我以前设计和实现过这样的系统。
忽略用户帐户管理,您的系统将需要提供以下方法:
检索新的潜在客户数据(网络蜘蛛)
从潜在客户数据中识别并提取相关结果(过滤)
收集、维护和组织结果(存储)
根据各种元数据(查询)选择结果
格式化结果以交付给用户(模板化)
向用户交付格式化结果(delivery)
如果您的项目范围很小(比如每天需要抓取的站点少于 100 个),您可能会使用众多开源网络蜘蛛之一,包括 wget、Nutch、WebSphinx 等。您可能需要提供用于调度、监视和控制的仪器(定制软件)。如果您的项目范围大于此,您可能需要“推出自己的”爬虫解决方案(定制软件)。通常,这将被设计为分布式并行架构。
对于简单的过滤,正则表达式就足够了,但对于需要 HTML 布局知识的更复杂的任务(提取页面上第四个表的第五个列表元素 ( <LI/>
) 的文本组件),您需要使用一个 XHTML 解析器。无论您如何进行,您都需要提供自定义软件以根据用户的需求进行过滤。
虽然任何数据库技术都可用于存储从检索到的文档中提取的结果,但使用像 Apache SOLR 这样针对文本优化的引擎可以让您根据需要轻松扩展搜索条件。由于 SOLR 支持附加和搜索与每个文档关联的元数据,这将是一个不错的选择。您还需要在此处提供自定义软件以自动执行此步骤。
一旦您从 SOLR 选择了候选结果列表,就可以使用任何脚本语言将它们模板化为一封或多封电子邮件,并将它们注入(inject)您的邮件传输代理 (MTA)。这还需要定制软件来自动执行此过程(如果需要,将特定于用户的数据注入(inject)每条消息)。
关于algorithm - 通知系统的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011192/