2011-05-15 90 views
0

的原贴张贴在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

+0

这是一个非常广泛的要求,而不是容易回答的问题。我建议你想出一些更具体的具体问题。你是否开始实施这个系统?你有任何特定的技术要求(即只使用java,mongodb等)? – 2011-05-15 21:15:03

回答

0

在潜入网络抓取网站之前,您也应该看看Google的自定义搜索API。这样,谷歌可以帮助您返回基于关键字的搜索结果,您可以根据您的额外算法/规则等在您的应用程序中进行筛选,并使整个工作起作用。

2

你的问题是一个很大的问题,但我会采取刺探,因为我设计和实现了这样的系统。

忽略用户帐户管理,你的系统需要提供的手段:

  1. 检索新的前景数据(蜘蛛)

  2. 识别和提取前景数据相关的结果(过滤)

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

  4. 小号基于各种元数据(查询)

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

  6. 交付格式的结果给用户(交付)

如果你的项目的范围是选结果(比如说每天需要蜘蛛的站点少于100个),你可能会与许多开放源代码的网络蜘蛛之一相处,包括wget,Nutch,WebSphinx等等。你可能需要提供工具(定制软件)监控和控制。如果你的项目范围比这大,你可能需要“推出你自己的”蜘蛛解决方案(定制软件)。通常这将被设计为分布式并行架构。

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

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

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