通知系统的设计问题

时间:2011-05-15 20:56:12

标签: algorithm search search-engine web-crawler

原帖发布于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

任何帮助将不胜感激。我指的是这个wiki,它将Nutch和Solr整合在一起用于上述目的http://wiki.apache.org/nutch/RunningNutchAndSolr

2 个答案:

答案 0 :(得分:2)

你的问题是一个很大的问题,但我会考虑到它,因为我之前已经设计并实现了这样的系统。

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

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

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

  3. 收集,维护和整理结果(存储)

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

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

  6. 将格式化结果发送给用户(投放)

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

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

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

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

答案 1 :(得分:0)

在开始自己抓取网页之前,您应该先查看Google的自定义搜索API。通过这种方式,Google可以帮助您返回基于关键字的搜索结果,以后可以根据您的其他算法/规则等在您的应用程序中进行过滤,并使整个过程发挥作用。