全文检索、数据挖掘、推荐引擎系列1---技术架构

在后web2.0时代,简单的允许用户产生内容,连接用户组成社交网络,满足用户个性化需求,已经变成各个网站的标配,不可能成为网站的特色和竞争优势了。然而,随着用户产生内容的增多,用户与系统交互手段的丰富,用户可供选择的选项的增多,用户迫切需要一种可以处理当前信息爆炸时代的工具,可以迅速找到自己想要的内容,更加容易的做出正确的决策,因此在后web2.0时代,全文检索、数据挖掘、推荐引擎的应用,将是各大网站下一轮竞争的焦点。

但是应用这三种技术需要一个统一的技术架构,在这个统一的架构下,才能将全文检索、数据挖掘、推荐引擎的功能发挥出来。我们将全文检索、数据挖掘、推荐引擎统成为商业智能系统,而与用户交互的部分称为前端系统。根据后台商业智能系统的功能不同,可以将后台商业智能系统分为三大类服务:同步服务、异步服务、后台线程。

  1. 同步服务:主要处理用户即时全文检索查询请求,给出推荐条目,通常同步服务使用异步服务或后台进程产生的商业智能数据,这些数据存在缓存中如memcached或数据库mysql中,通过Web Service或Restful方式提供
  2. 异步服务:为了完成实时搜索、实时推荐等实时性需求,用户的每个交互,在保存到数据库中的同时,系统会将该事件写入消息服务器中,异步服务组件通过监听消息服务器上的topic来启动业务处理逻辑,从而实现近实时需求。例如,用户为某个产品写下评论或博客后,立即就可以通过全文检索中查询中该内容,用户对内容的打分或投票也可以立即反映到给用户的推荐列表中
  3. 后台服务:主要指需要长时间在后台运行的服务,例如聚合网站中对信息源的抓取,内容批量导入的处理等等

为了满足上述需求,自然对所选用的技术和产品有一定的要求。

  • 编程语言选择:对于后台的商业智能系统而言,数据处理需要强大的处理能力,显示PHP、Python等不是最佳选择,选择Java可能更能满足要求,因为基于Java的全文检索、数据挖掘、推荐引擎均有成熟的开源软件可供选择,如Lucene、WEKA、Mahout。另外,在性能扩展方面,Hadoop是当前的最通用的Map/Reduce选项,其本身就是Java实现的
  • 应用服务器:考虑到需要同时满足同步服务、异步服务及后台进程的需求,要求应用服务器(Web服务器)具有消息中间件的功能,而单从这点来看,选择Glassfish似乎是更好的选择,因为Tomcat再加上Httpd、ActiveMQ/OpenJMS配置相对要复杂一些
  • 数据库系统:当前对大型系统而言,常常纠结于选择SQL还是NoSQL,NoSQL的性能好,但是不能处理复杂的查询,而SQL可以处理复杂查询,但是性能上又会差很多,通常的折衷解决方案是数据库加缓存系统,但是当MySQL 5.6.2将InnoDB引擎与Memcached相结合之后,似乎选择MySQL这种集成解决方案更具有优势,这让我们看到了SQL与NoSQL的融合趋势,这种方案的唯一缺陷是目前MySQL 5.6.2还没有GA,这种方案还有成功案例可供借签

综上所述,个人认为采用Java+Lucene+WEKA/Mahout+Glassfish+MySQL(>5.6.2)是实现后台商业智能的合理架构。

转载于:https://www.cnblogs.com/javatec/archive/2011/08/09/2152487.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值