论坛首页 Java企业应用论坛

全文检索 方案比较

浏览 12895 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-20  

应用场景:
    一台WEB服务器(apache) + 两台应用服务器集群(AIX系统) + DB
    系统中论坛模块需要提供全文检索功能,由于是企业内部论坛,其索引的更新与查询频率较低(无非主题帖和回帖),且数据量不大(后期也很难超过1G)

关注点:
    分布式索引: Lucene 未内置对分布式索引的支持
    模块移植性: 能方便的将全文检索功能模块移植到其它系统中.

目前想到的和google到的解决方案如下:

1. Solr
   优点: 基于Lucene,支持集群,易上手,其它忽略 
   缺点: 从Apache Solr项目描述上可符合功能要求,但未使用过Solr,缺乏其可行性评估 ; 似乎无法处理单结点故障(不确定)

2. Lucene + RMI
    在DB服务器(或其它服务器)部署RMI服务端,并将索引建立于该服务器上.索引的更新和查询都走RMI
    优点: 易于实现

3.  Lucene+NFS
     类似于Lucene+RMI部署架构,由于索引数据量不大,检索时可采用RAMDirectory.
     优点: 易于实现
     缺点: 未使用过此类架构,对其网络延迟等问题缺乏评估

4.  Lucene+Hadoop
     利用Hadoop建立分布式文件系统.本人对Hadoop不熟悉,对此方案的可行性无法评估.
     若有牛人成功实施过此方案,还望提供相关经验和资料.  如果此方案可行,本人非常希望借此机会学习Hadoop.

5.  Sphinx
     功能很强大,遗憾的是Sphinx并不提供Java 编程API,需要绕道.

6.  nutla
     从其项目介绍来看,似乎能满足要求,但最新版本为1.0a9,风险很大

从实现难易程度来看,倾向于方案3 ; 从可靠性和扩展性来看,倾向于方案2(对方案4不够了解) .
希望路过的大牛能对以上方案给个评估,以免本人多走弯路. 若有更好的解决方案,望不吝赐教.

附参考资料:
Lucene      : http://lucene.apache.org/
Solr           : http://lucene.apache.org/solr/
Hadoop     : http://hadoop.apache.org/common/docs/r0.19.2/cn/hdfs_design.html
NFS           : http://jqs.itpub.net/post/140/479176
                    http://autumnice.blog.163.com/blog/static/5552002007102924734853/
 
Sphinx       : http://hi.baidu.com/topcompanyjobs/blog/item/dcd606dcb2bfa5df8d102990.html
MG4J         : a free full-text search engine for large document collections written in Java 
                   http://mg4j.dsi.unimi.it/#install
JAVAEYE    : http://edwardpro.iteye.com/blog/183686  lucene的前端集群思路
                   http://www.kuqin.com/searchengine/20080324/5055.html  为什么说Lucene不好  (原javaeye链接已经失效) 
Javabloger : http://www.javabloger.com/article/distributed-lucene-cluster.html   lucene的分布式搜索-入门篇
nutla         : http://code.google.com/p/nutla/
                   http://www.blogjava.net/nianzai/archive/2010/10/27/336255.html
 

其它:
1. 从数据库端入手,系统数据库采用IBM DB2,从网上搜索到 IBM OmniFind 似乎具备检索查询功能,请使用过该工具的大大们给个说法,谢谢.
2. God Bless Me , 最好只使用一台应用服务器.

 

   发表时间:2011-05-20  
推荐使用方案1 solr,稳定,功能完备,有社区支持。
关键是不用太多开发,开箱即用。
这个我们在公司产品系统上使用过,索引多超过1亿的网页,性能还可以。

再说方案3,为什么要用NFS?直接使用RMI,为什么不考虑其它的远程服务方式?
就算方案是好的,那么你需要熟悉Lucene,RMI,NFS,而且需要开发,测试,工期基本是月级别的,风险太高。

0 请登录后投票
   发表时间:2011-05-20  
建议你深入了解一下solr,提供很多特性,比如:
Cache
Replication
Auto Suggest
Faceted Query
等等
而且有商业公司Lucidworks支持,有非常多的成功案例

在企业搜索领域,目前没有看到比solr更好的开源解决方案。
0 请登录后投票
   发表时间:2011-05-20  
andyao 写道
建议你深入了解一下solr,提供很多特性,比如:
Cache
Replication
Auto Suggest
Faceted Query
等等
而且有商业公司Lucidworks支持,有非常多的成功案例

在企业搜索领域,目前没有看到比solr更好的开源解决方案。

我们表示 solr很棒~
0 请登录后投票
   发表时间:2011-05-21  
如果可以的话,直接DB全文检索索引不成吗?应该足够应付需要了吧?
0 请登录后投票
   发表时间:2011-05-21  
魔力猫咪 写道
如果可以的话,直接DB全文检索索引不成吗?应该足够应付需要了吧?

db全文检索不够灵活啊,比如敏感词啊,排名啊
0 请登录后投票
   发表时间:2011-05-23  
katta
0 请登录后投票
   发表时间:2011-05-23  
Sphinx+mysql还是很强大的
solr用过,但是索引文件还是挺大。
0 请登录后投票
   发表时间:2011-05-23  
直接用nutch好了
基于lucen,整合hadoop
调研不足啊
0 请登录后投票
   发表时间:2011-05-23  
andyao 写道
推荐使用方案1 solr,稳定,功能完备,有社区支持。
关键是不用太多开发,开箱即用。
这个我们在公司产品系统上使用过,索引多超过1亿的网页,性能还可以。

再说方案3,为什么要用NFS?直接使用RMI,为什么不考虑其它的远程服务方式?
就算方案是好的,那么你需要熟悉Lucene,RMI,NFS,而且需要开发,测试,工期基本是月级别的,风险太高。



谢谢,其实根据后期资料查询,个人也比较倾向solr,工期最短..
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics