基于LUCENE实现自己的推荐引擎(转)

来源http://www.yeeach.com

1、常用推荐引擎算法问题

1)、相对成熟、完整、现成的开源解决方案较少

粗略分来,目前与数据挖掘及推荐引擎相关的开源项目主要有如下几类:

数据挖掘相关:主要包括WekaR-ProjectKnimeRapidMinerOrange 等

文本挖掘相关:主要包括OpenNLPLingPipeFreeLingGATE 等,具体可以参考LingPipe’s Competition

推荐引擎相关:主要包括Apache MahoutDuine frameworkSingular Value Decomposition (SVD) ,其他包可以参考Open Source Collaborative Filtering Written in Java

搜索引擎相关:Lucene、Solr、Sphinx、Hibernate Search等

2)、常用推荐引擎算法相对复杂,入门门槛较低

3)、常用推荐引擎算法性能较低,并不适合海量数据挖掘

以上这些包或算法,除了Lucene/Sor相对成熟外,大部分都还处于学术研究使用,并不能直接应用于互联网大规模的数据挖掘及推荐引擎引擎使用。

2、采用Lucene实现推荐引擎的优势

对很多众多的中小型网站而言,由于开发能力有限,如果有能够集成了搜索、推荐一体化的解决方案,这样的方案肯定大受欢迎。采用Lucene来实现推荐引擎具有如下优势:

1)、Lucene 入门门槛较低,大部分网站的站内搜索都采用了Lucene

2)、相对于协同过滤算法,Lucene性能较高

3)、Lucene对Text Mining、相似度计算等相关算法有很多现成方案

在开源的项目中,Mahout或者Duine Framework用于推荐引擎是相对完整的方案,尤其是Mahout 核心利用了Lucene,因此其架构很值得借鉴。只不过Mahout目前功能还不是很完整,直接用其实现电子商务网站的推荐引擎尚不是很成熟。只不过从Mahout实现可以看出采用Lucene实现推荐引擎是一种可行方案。

3、采用Lucene实现推荐引擎需要解决的核心问题

Lucene擅长Text Mining较为擅长,Lucene在contrib包中提供了MoreLikeThis功能,可以较为容易实现Content-Based的推荐,但对于涉及用户协同过滤行为的结果(所谓的Relevance Feedback),Lucene目前并没有好的解决方案。需要在Lucene中内容相似算法中加入用户协同过滤行为对因素,将用户协同过滤行为结果转化为Lucene所支持的模型。

4、推荐引擎的数据源

电子商务网站与推荐引擎相关典型的行为:

  • 购买本商品的顾客还买过
  • 浏览本商品的顾客还看过
  • 浏览更多类似商品
  • 喜欢此商品的人还喜欢
  • 用户对此商品的平均打分

因此基于Lucene实现推荐引擎主要要处理如下两大类的数据

1)、内容相似度

例如:商品名称、作者/译者/制造商、商品类别、简介、评论、用户标签、系统标签

2)、用户协同行为相似度

例如:打标签、购买商品、点击流、搜索、推荐、收藏、打分、写评论、问答、页面停留时间、所在群组等等

5、实现方案

5.1、内容相似度

基于Lucene MoreLikeThis实现即可。

5.1、对用户协同行为的处理

1)、用户每一次协同行为都使用lucene来进行索引,每次行为一条记录

2)、索引记录中包含如下重要信息:

商品名、商品id、商品类别、商品简介、标签等重要特征值、用户关联行为的其他商品的特征元素、商品缩略图地址、协同行为类型(购买、点击、收藏、评分等)、Boost值(各协同行为在setBoost时候的权重值)

3)、对评分、收藏、点击等协同行为以商品特征值(标签、标题、概要信息)来表征

4)、不同的协同行为类型(例如购买、评分、点击)设置不同的值setBoost

5)、搜索时候采用Lucene MoreLikeThis算法,将用户协同转化为内容相似度

以上方案只是基于Lucene来实现推荐引擎最为简单的实现方案,方案的准确度及细化方案以后再细说。

更为精细的实现,可以参考Mahout的算法实现来优化。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.介绍(Introduction) 1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。  输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。  可访问 http://www.xunta.so立即体验. 2.什么是搜人引擎?  这里的搜人不是人肉搜索,而是用户根据自己的兴趣和爱好输入相关知识点,然后找到这个知识点上的达人。 3.XunTa上的延伸  XunTa允许对每个人名下的数量无限制的关键词单独打分,从而实现基于“评价图谱”和“知识图谱”的好友匹配与信息推荐。 二.XunTa技术特点  1.在架构上内生地支持增量式实时搜索。  2.除达人搜索外,还提供最新搜索。  3.经过长期测试,性能稳定,速度快 三.布署方法  1. 软件包解压后可看到以下文件目录结构:  xunta_v1.0   |---demo    可直接布署到Tomcat的项目war包   |---luceneIndex  索引文件夹,下面放置Lucene4.3版本的索引文件,存放了XXX条来自社交网站的“发言”数据。   |---XunTa   XunTa项目源代码,可导入Eclipse(javaEE版)并运行。   |---readme.txt  您正在看的该说明文件。  2. Tomcat下直接体验XunTa搜人引擎   a.将索引文件夹luceneIndex_new复制到D盘根目录下   b.将 XunTa.war 复制到Tomcat的webapps目录下   c.启动Tomcat,然后在浏览器地址栏输入 http://localhost:8080/XunTa 可看到XunTa主页.在搜索框中输入关键词即返回“达人”列表。   (Tomcat的安装这里不另说明。)  3. 在myEclipse下导入源代码   a.xunta文件夹下放的是项目源文件,可直接导入myEclipse生成一个名为“xunta”的项目,   b.xunta\LocalContext\so\xunta\localcontext目录下的LocalContext.java是配置项目索引文件路径的类,默认是d:\\luceneIndex\\travel.     如果索引文件夹luceneIndex_new没有复制到D盘根目录下,则要修改默认路径.   c.启动myEclipse中的Tomcat7,然后在浏览器地址栏输入 http://localhost:8080/XunTa 即可看到XunTa主页.在搜索框中输入关键词即返回“达人”列表。 四.其它  1. 用户可按Lucene4.3标准自行创建索引数据,索引文档的结构可下载lukeall工具来查看.  2. 用户也可使用与XunTa配套的社交信息实时抓取工具来生成索引数据。它通过配置模版的方法抓取网页数据,也可以通过API获得目标网站的数据。该工具整理好亦将上载到开源社区。如急需,可向我们索取。  3. 你可以通过试用下面的网站来测试部分功能。 遇到任何技术问题,或对搜索创意感兴趣,欢迎加入寻TA网官方QQ群(298342166)讨论,也可发邮件(Email:[email protected])或致电(18521702948,13817385089)垂询. 下载并使用该开源代码,表明您同意并遵守CC-BY-SA 3.0协议和GNU自由文档许可证.您可以上述协议条款下修改和再使用。 标签:(一种用

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值