代码改变世界

记搭建图书检索与推荐系统

2011-09-07 03:56  onm  阅读(221)  评论(0编辑  收藏  举报

这个供学生自娱自乐的在学校申请的项目,自申请日已经过去4个月左右了,俺终于开始大量码代码了。

检索与推荐系统,申请项目那阵子,俺看了本书《集体智慧编程》,很有感觉的样子,并且那阵子对社会化推荐很感兴趣,于是申请了这个题目。当初曾有过遐想,想俺们一帮同学自己研究一下,从零开始搭建检索和推荐系统。当然想法是美好的,现实是懒惰的。

我于是查一些现有的搜索或者推荐的实现,大概了解了一下行情。

后来选定了搜索基于Lucene,推荐基于Mahout,然后选择了一个REST风格的框架Restlet作为服务器和客户端的桥梁,向外暴露API。服务器软件选择用Tomcat。客户端是Android。(update: Web页面模板引擎用了FreeMarker)

对我来说都是新鲜的玩应,之前面对一众新鲜货,各种雾水。近日终于的到了一些的进展,基本入了门,实现了一些demo。demo的状况是检索和推荐各种不准......

昨晚比较纠结的是Android上用restlet框架访问我的Server时,各种连接不上。后来发现是我傻X了,忘了给Android客户端开启访问网络的权限......

 

一点简介:

Lucene是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构。我感觉,搜索这个东西,最简单了说,就是建立索引,然后查找索引。索引说白了也就是建立关联,去除无用的东西。这里最难的就是各种高深的算法和为效率而考虑的各种优化。

Mahout提供"一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序"。现在略微搞懂了协作筛选(CF),这里的水更深了,完全是科学范畴,我这搞工程建设的完全吃不消。我就照最简单的来,现在感觉还好。

REST风格搞得虚虚实实的,要我说还真说不明白。摘抄五条关键原则:为所有“事物”定义ID;将所有事物链接在一起;使用标准方法;资源多重表述;无状态通信。Restlet是一个Java实现的REST风格的框架。

 

一点资料:

选定的这些东西资料还不是很多,其中Mahout最难搞,网上找到几个不错的东西,整理一下。

Lucene:

lucene in action》这本书还可以,看完后我终于对Lucene有了个稍微清晰的认识,之前网上看的乱乱的,系统认识一下这书还行。但是里面示例代码旧了,看lucene官方的example吧。

Lucene:基于Java的全文检索引擎简介

http://lucene.apache.org/

Mahout:

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤  这个前后两个部分也不错。

Apache Mahout 简介

基于 Apache Mahout 构建社会化推荐引擎

http://mahout.apache.org/

Restlet:

http://www.restlet.org/ 没找到太犀利的文章,就翻官方文档吧。这个理解一下REST风格就好了,看文章也没啥用,就写Code就好了。

深入浅出REST

FreeMarker:

http://freemarker.sourceforge.net/ 有个中文手册。