wudi

博客园 首页 新随笔 联系 订阅 管理

对于数据量大(索引文件大于50M)的索引,尽量不要用索引中的字段排序,要用索引ID排序(INDEXORDER);两者效率相差近10倍,以下从内存占用与CPU处理时间来比较:
内存占用比较: 图一:使用整型的唯一标识字段排序
图二:使用索引ID(INDEXORDER)排序
拿占用内存最多的对象来比较:我们可以看到,图一比图二多 2,900,766 bytes(索引文件大小:61M)
处理时间比较: 使用整型的唯一标识字段排序的处理时间是3016ms,使用索引ID(INDEXORDER)排序的时间是303ms
解决方法: 为了能够使索引ID倒序等同于时间倒序:在建立索引时,就要按照数据的时间顺序建立,老的数据先索引,新的数据后索引 倒序代码:

 

//以下代码基于Incubating-Apache-Lucene.Net-2.0-004-11Mar07
Hits hits = searcher.Search(query, new Sort(new SortField(null, SortField.DOC, true)));

posted on 2013-04-26 15:16  菜鸟吴迪  阅读(671)  评论(0编辑  收藏  举报