`

转:基于lucene实现自己的推荐引擎

 
阅读更多

采用基于数据挖掘的算法来实现推荐引擎是各大电子商务网站、SNS社区最为常用的方法,推荐引擎常用Content-Based 推荐算法及协同过滤算法(Item-Based 、User-based)。但从实际应用来看,对于大部分中小型企业来说,要在电子商务系统完整采用以上算法还有很大的难度。

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

1)、相对成熟、完整、现成的开源解决方案较少
粗略分来,目前与数据挖掘及推荐引擎相关的开源项目主要有如下几类:
数据挖掘相关:主要包括Weka、R-Project、Knime、RapidMiner、Orange 等
文本挖掘相关:主要包括OpenNLP、LingPipe、FreeLing、GATE 、Carrot2 等,具体可以参考LingPipe’s Competition
推荐引擎相关:主要包括Apache Mahout、Duine framework、Singular 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较为擅长,在contrib包中提供了MoreLikeThis功能,可以较为容易实现Content-Based的推荐,但对于涉及用户协同过滤行为的结果(所谓的Relevance Feedback),Lucene目前并没有好的解决方案。需要在Lucene中内容相似算法中加入用户协同过滤行为对因素,将用户协同过滤行为结果转化为Lucene所支持的模型。

4、推荐引擎的数据源

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

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

    因此基于Lucene实现推荐引擎主要要处理如下两大类的数据
    1)、内容相似度
    例如:商品名称、作者/译者/制造商、商品类别、简介、评论、用户标签、系统标签
    2)、用户协同行为相似度
    例如:打标签、购买商品、点击流、搜索、推荐、收藏、打分、写评论、问答、页面停留时间、所在群组等等

    5、实现方案

    5.1、内容相似度 基于Lucene MoreLikeThis实现即可。
    5.2、对用户协同行为的处理
    1)、用户每一次协同行为都使用lucene来进行索引,每次行为一条记录
    2)、索引记录中包含如下重要信息:
    商品名、商品id、商品类别、商品简介、标签等重要特征值、用户关联行为的其他商品的特征元素、商品缩略图地址、协同行为类型(购买、点击、收藏、评分等)、Boost值(各协同行为在setBoost时候的权重值)
    3)、对评分、收藏、点击等协同行为以商品特征值(标签、标题、概要信息)来表征
    4)、不同的协同行为类型(例如购买、评分、点击)设置不同的值setBoost
    5)、搜索时候采用Lucene MoreLikeThis算法,将用户协同转化为内容相似度
    以上方案只是基于Lucene来实现推荐引擎最为简单的实现方案,方案的准确度及细化方案以后再细说。
    更为精细的实现,可以参考Mahout的算法实现来优化。

  • 分享到:
    评论

    相关推荐

      基于lucene4.3的知识图谱搜索引擎XunTa(一种用"知识点"来找人的搜人引擎).zip

       XunTa允许对每个人名下的数量无限制的关键词单独打分,从而实现基于“评价图谱”和“知识图谱”的好友匹配与信息推荐。 二.XunTa技术特点  1.在架构上内生地支持增量式实时搜索。  2.除达人搜索外,还提供...

      Java毕业设计-[搜索链接]java(结合lucene)版的公交搜索系统_javaso.rar

      **Java公交搜索系统(基于Lucene)** 本资源是一个基于Java语言开发的公交搜索系统,结合了强大的全文搜索引擎Lucene,为用户提供高效、准确的公交线路查询服务。系统采用模块化设计,易于二次开发和定制,可广泛...

      SSH 购物网站 内置搜索引擎 推荐引擎

      ESHOP一站式购物网站,提供购物比价,购物优惠汇总,购物重定向,价格趋势展示,为了充分利用购物...索引擎,网站结构基于S2SH开发,使用Apache的Mahout算法进行了推荐引擎设计,实现了基于用户和商品的双层数据推荐

      论文研究-数字图书馆主题搜索引擎的设计与实现.pdf

      提出构建数字图书馆主题搜索引擎的总体系统设计。利用一个预处理系统尽量选择高质量的种子站点,从而产生Web主题定义数据;在系统控制器的协调下,各主题爬行器同步地采集爬行器所推荐的Web资源,对...基于开源Lucene平

      百度云盘 pdf《大数据架构和算法实现之路:电商系统的技术实战》百度云盘-带标签目录

      4.5 常见的搜索引擎实现………... 108 4.5.1 Lucene 简介……………… 108 4.5.2 Solr 简介 ......………………… 113 4.5.3 Elasticsearch 简介…………… · 120 4.6 案例实践……………… 123 4.6.1 实验环境...

      论文研究-网站简约本体垂直搜索系统的设计与实现.pdf

      该系统以中国气象数据网(http://data.cma.cn)为例,利用protégé根据网站的导航目录,构建了中国气象数据网的本体库,基于Lucene引擎构建技术框架,对本体库中的对象及网页内容分别进行分词,并构建本体对象索引...

      javajava概要设计方案.doc

      Lucene , apache1.3定义spider (基于一个树型spider改写而成) Index (lucene) Search 实现搜索 (JSP , lucene ) Analyzer 实现分词 (CJKAnalyzer)Eclipse (JDK开发平台 (IDE) )1.4参考资料 中文分词 <lucene in ...

      贞龙jsp版本CMS(BIZOSSCMS)高性能内容管理系统正式版

      7. 基于Lucene的全文检索和数据挖掘系统 高性能的文本索引数据仓库生成机制 多维多方向的数据检索和排序 关键字、分类、地区多向检索技术,最彻底的挖掘互联网情报 搜索热门、相关性关键字,人工推荐关键字综合展现 ...

      单点登录源码

      基于bootstrap实现的响应式Material Design风格的通用后台管理系统,`zheng`项目所有后台系统都是使用该模块界面作为前端展示。 > zheng-ui 各个子系统前台thymeleaf模板,前端资源模块,使用nginx代理,实现动静...

      贞龙(BIZOSSCMS)高性能内容管理系统JAVA版 v4.1.rar

      7. 基于Lucene的全文检索和数据挖掘系统 高性能的文本索引数据仓库生成机制 多维多方向的数据检索和排序 关键字、分类、地区多向检索技术,最彻底的挖掘互联网情报 搜索热门、相关性关键字,人工推荐关键字综合...

      x3blog博客程序 0.7.1.1

      自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可以和中科院的ICTCLAS相媲美,结合当前最成熟的Lucene的.net版本,实现了功能强大执行快速的全文检索引擎。...

    Global site tag (gtag.js) - Google Analytics