Lucene.Net2.0搜索结果排序问题
2009-07-27 09:30
393 查看
对于数据量大(索引文件大于50M)的索引,尽量不要用索引中的字段排序,要用索引ID排序(INDEXORDER);两者效率相差近10倍,以下从内存占用与CPU处理时间来比较:
内存占用比较:
图一:使用整型的唯一标识字段排序
图二:使用索引ID(INDEXORDER)排序
拿占用内存最多的对象来比较:我们可以看到,图一比图二多 2,900,766 bytes(索引文件大小:61M)
处理时间比较:
使用整型的唯一标识字段排序的处理时间是3016ms,使用索引ID(INDEXORDER)排序的时间是303ms
解决方法:
为了能够使索引ID倒序等同于时间倒序:在建立索引时,就要按照数据的时间顺序建立,老的数据先索引,新的数据后索引
倒序代码:
http://markmail.org/message/noq4kohwipx5wzfo#query:Sort.INDEXORDER+page:1+mid:4ydkfgdj6kbvhq2x+state:results
In Cnblog.com:
/article/5655714.html
内存占用比较:
图一:使用整型的唯一标识字段排序
图二:使用索引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)));参考:
http://markmail.org/message/noq4kohwipx5wzfo#query:Sort.INDEXORDER+page:1+mid:4ydkfgdj6kbvhq2x+state:results
In Cnblog.com:
/article/5655714.html
相关文章推荐
- Lucene搜索结果排序问题(按时间倒序排的替代解决方法)
- Lucene.net搜索结果排序(单条件和多条件)
- Lucene.net搜索结果排序(单条件和多条件)
- Lucene.net搜索结果排序(单条件和多条件)
- Lucene.net搜索结果排序(单条件和多条件)
- Lucene搜索结果排序问题(按时间倒序排的替代解决方法)
- 盘古分词在 Lucene.net 2.9 版本下搜索没有结果的原因分析及盘古分词2.0版本要开发的新功能
- (转)Lucene.net搜索结果排序(单条件和多条件)
- Lucene.net搜索结果排序(单条件和多条件)
- Phpcms v9搜索结果不全及搜索不到内容和搜索结果排序问题
- lucene.net 高级应用之排序、设置权重、优化、分布式搜索
- 关于lucene搜索时排序的问题
- Lucene检索结果的排序问题、boost(激励因子)
- 开源DIGG软件PBDigg2.0的修改(八):解决搜索文章结果出现代码的问题。
- 使用lucene对搜索结果排序
- Lucene.Net如何实现搜索结果分类统计功能
- lucene.net 2.0 中文分词后语法高亮问题
- Lucene的搜索结果排序
- Lucene.Net 按类别统计搜索结果数
- lucene.net 2.0 中文分词后语法高亮问题