用lucene做了很长时间的开发,今天写一些出来与大家分享,可能有不全和不对的地方,欢迎一起探讨!
做项目的时候,总会搜索查找的需求,在接触luncene之前,大家用的无非是like,全文索引之类的。对于数据库的这种查询操作,不但效率低,以占用的大部分的性能。我们总是在不断的想方设法的提高系统的速度,但我们的大部分时间可能都花在数据库上。原因很简单:只要你的程序没有执行逻辑上的错误,可能你是个新手,多声明的几个变量(非重量级),多执行些操作,但效率不是太明显。如果你的一个索引,临时表,存储过程或是触发器有问题,这可能是整个系统瓶颈甚至是引发系统瘫痪的罪魁祸首(有点跟现在的硬盘速度瓶颈类似)。
我曾经作过这样的试验:有约20万条文章,用like 去查找用了15秒,随便说一下数据库中字段超过大小(好像是1000个)就无法使用索引了。而搜索只需30ms左右,事实上当索引文件不超过300M(相当于100万篇文章,每篇文章在万字以上)这个值很稳定。搜索的速度快,但是也有缺点,就是不能及时更新,因为必须索引数据,而且更新频率不可过高,索引更新时lucene是无法进行查询的,针对这种情况,我目前是通过临时索引解决的:就是有两份索引,一个是真实的,一份是临时。更新时先更新临时,临时更新完毕,覆盖真实的。在这个过程之中肯定有一个是可以使用的。
搜索一般是使用在大批量数据机和高效率的查询上,比如淘宝网的商品查询。Lucene本身原来是java的开源项目,而后由达人翻译成了c#版本,有兴趣的朋友可以到http://lucene.apache.org/java/docs/index.html看看。先说到这吧。接下来的章节:
.net lucene 实战搜索(二)------ 基本
.net lucene 实战搜索(四)------ 分词与索引(2)
.net lucene 实战搜索(五)------ 分词与索引(3)
.net lucene 实战搜索(六)------ 性能深入
.net lucene 实战搜索(七)------ 搜索构建(1)索引
.net lucene 实战搜索(八)------ 搜索构建(2)搜索逻辑(1)
.net lucene 实战搜索(九)------ 搜索构建(2)搜索逻辑(2)
.net lucene 实战搜索(十)------ 问题与总结
.net lucene 实战搜索(二)----- 基本之索引 : http://www.cnblogs.com/xuwenzhuo/archive/2007/10/06/915280.html
.net lucene 实战搜索(三)----- 基本之搜索 : http://www.cnblogs.com/xuwenzhuo/archive/2007/10/11/918246.html