Lucene初探

      今天在google一个问题时,无意中看到了一个关于Lucene使用的连接,以前早听过其大名,一直也没有学习,只知道是个java开源的搜索引擎,今天既然看到一个连接,就点进去看了看,发现确实还有点意思,于是又google了几篇文章看了看,特写下一点自己的想法,算个小结。 

      本文并不涉及Lucene的具体使用。

      首先我们来看像Lucene这样的搜索引擎适用的地方。我现在的工作主要是一些j2ee的项目,有分布式的,普通b/s的等,在这些系统中其实都用不着Lucene,因为我也有数据要持久化,但这些数据都按字段分的比较小,要查询,检索之间用sql语句即可,改善性能可以在表中建索引,用存储过程等方法。但换个项目场景,比如说一个论坛,它里面可以发帖子,这些帖子也要持久化到数据库中,等以后我要通过帖子内容的关键字来搜索帖子时,如果帖子内容是存在数据库表的某个字段中,那这样的查询或搜索通过sql语句就帮不上忙了,这是像Lucene这样的全文搜索引擎就可以帮上忙了,它实际上也是靠索引,只是这个索引是针对内容的,所以是脱离数据库的。还有一点,我们对数据库中的字段做精确查询性能还可以,但做模糊查询时性能下降很快,如like关键字的使用,而对于使用全文搜索的Lucene来说则主要可以解决这方面的问题。

      像Lucene这样的全文搜索引擎,它服务的对象是文本类文件,像.txt,xml文件等,所以我们要不数据库中的数据先导成这样的文本文件,如xml文件,然后利用Lucene对xml中的内容做索引,以后查询直接查索引即可(如何建立索引是相当关键的,这也是各个引擎好坏的差别之一)。

       总体上讲,全文检索和数据库其实是2种根本不同的应用模式,全文检索系统其实往往也没有必要和数据库那么高的实时同步机制,如果按照低更新,高缓存的模式进行设计。数据库数据到全文索引的同步过程一般都可以通过脚本定期将数据库的数据导出成XML,然后进入Lucene的全文索引。而针对原有数据记录的更新和删除,其实一般可以通过定期的重建索引解决。所以我们在csdn中通过关键字来搜索相关的文档时,找到了连接,但点击去没有文章了,因为文章已经从数据库中删除了,但通过导出的文本文件建立的索引还没更新,所以产生了这样的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值