随笔分类 -  Lucene

摘要:在2010年的时候,写过两篇关于LUCENE高性能GROUP BY、DISTINCT的文章,最近在研究LUCENE的过程中发现了一个名为FieldCache的东东,于是乎重新改进Lucene高性能GROUP BY、DISTINCT,发现性能有了数量级别的提升,究竟是因为啥让它有了如此之高的性能提升呢?下面我就来为大家揭开这个谜团!FieldCache是啥?我们知道,如果对每一个文档号都用reader 读取域的值会影响速度,所以Lucene 引入了FieldCache 来进行缓存,而FieldCache 并非在存储域中读取,而是在索引域中读取,从而不必构造Document 对象,然而要求此索引域 阅读全文
posted @ 2011-04-19 11:36 [曾恩] 阅读(7759) 评论(6) 推荐(2) 编辑
摘要:IndexReader删除IndexReader.DeleteDocument(int docNum)——根据Document的docId删除单个DocumentIndexReader.DeleteDocuments(Term term)——根据Term来删除单个或多个Document使用IndexReader进行Document删除操作时,文档并不会立即被删除,而是把这个删除动作缓存起来,直到调用IndexReader.Close()时,删除操作才会被真正执行。注:使用IndexReader进行删除时,必须关闭所有已经打开的IndexWriter;当使用当前的IndexReader进行搜索时 阅读全文
posted @ 2011-04-18 11:28 [曾恩] 阅读(3685) 评论(0) 推荐(1) 编辑
摘要:紧接上一篇 Lucene 如何实现高性能GroupBy 一 的讲:Lucene--Util--PriorityQueue.cs先给大家看一段代码,来源于PriorityQueue类Initialize这个方法做的最主要的一件事情就是初始化了一个名为heap的东东,这是个什么东东呢?它的作用何在?e.g. protected internal System.Object[] heap;看到这句大家应该清楚了heap是什么东东,它就是一个Object数组我们再看看Initialize方法,此方法带了个参数,“int maxSize”,这个maxSize = pageSize*pageIndex 阅读全文
posted @ 2010-11-30 17:12 [曾恩] 阅读(1998) 评论(3) 推荐(0) 编辑
摘要:注:以下讲解代码均以Lucene.net 2.9.2为例。GroupBy效果应用(http://www.tradetuber.com/search?key=led)Lucene如果实现高性能的GroupBy、SortBy效果,我想这个应该是Lucener(Lucene使用者简称Lucener)遇到的最头大的问题。 Lucene各个方面表现都很优异,唯独在GroupBy及SortBy方面显得蹩脚,那么接下来的文章中我将为Lucener讲解如何更好的解决这两大问题。 1.GroupBy 要实现GroupBy,我们应该从哪下手? 如何下手?从哪下手:从Collector类下手,Collector类相 阅读全文
posted @ 2010-11-24 10:14 [曾恩] 阅读(3743) 评论(3) 推荐(1) 编辑