Lucene搜索结果排序问题(按时间倒序排的替代解决方法)
对于数据量大(索引文件大于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)));
参考:http://markmail.org/message/noq4kohwipx5wzfo#query:Sort.INDEXORDER+page:1+mid:4ydkfgdj6kbvhq2x+state:results
分享到:
相关推荐
默认情况下,Lucene 搜索结果是按照文档的相关性(即查询评分)进行排序的。这个评分是通过 TF-IDF(词频-逆文档频率)算法计算得出的,它反映了文档中关键词出现的频率以及在整个文集中的稀有程度。 然而,有些...
Lucene 排序算法是搜索引擎中的核心组件之一,负责将搜索结果按照相关度排序以便用户快速找到所需信息。 Lucene 的排序算法主要基于 tf-idf 模型,以下是 Lucene 排序算法的详细介绍: 1. tf(Term Frequency):...
Lucene 的排序是指根据某个字段的值对搜索结果进行排序。 Lucene 提供了多种排序方式,包括升序和降序排序。可以使用 Sort 对象来指定排序字段和排序方式。 例如,下面的代码演示如何使用 Lucene 对搜索结果进行...
综上所述,这个项目展示了如何利用SSH框架与Lucene搜索引擎技术,实现一个功能完备的新闻搜索系统,包括高效搜索、结果排序、分页展示以及关键词高亮等特性。这样的系统对于提升新闻网站的用户体验具有重要意义。
它提供了强大的文本分析、索引和搜索功能,而排序作为搜索结果的重要组成部分,是Lucene的一个核心特性。本文将深入探讨Lucene如何根据关键词出现次数进行排序,以及如何实现自定义排序,包括处理`List<Map>`字段的...
在提供的"lucene4.3"压缩包中,可能包含了一个示例程序,演示了如何设置索引以存储地理位置信息,以及如何执行地理空间查询并按距离排序结果。这个例子可能涵盖了创建`Point`字段,构建查询,计算距离以及设置排序...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
首先,Lucene的核心功能之一就是提供高效的全文检索能力,但默认的搜索结果排序通常是基于相关度得分(Relevance Score),这是由TF-IDF算法计算得出的。然而,在实际应用中,我们往往需要根据其他因素(如时间、...
2. **调节因子**:仅在检索时使用,用于在不同查询条件下比较排序结果,由每个查询项权重的平方和计算得出。 3. **文档频率 (Term Frequency, TF)**:查询词在文档中出现的次数,通常使用平方根进行调整,以避免...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
排序是Lucene中的一项核心功能,允许我们根据文档的某个或多个字段来对搜索结果进行定制化排序。Lucene支持两种类型的排序:基于评分(Score Sorting)和基于字段(Field Sorting)。基于评分的排序默认按照相关性...
在Lucene搜索引擎中,Java用于处理后台逻辑,如构建索引、执行搜索查询以及处理搜索结果。Java类负责与Lucene API交互,实现索引的创建、更新和读取,以及执行复杂查询。 **4. 搜索引擎实现** - **索引构建**: 使用...
在这个主题中,我们将深入理解如何在Lucene 5中对搜索结果进行排序,以便提供更符合用户需求的检索体验。 **描述分析:** 虽然描述部分是空的,但我们可以根据常规的博客结构来推测内容。通常,这样的博客会涵盖...
"lucene搜索引擎项目"可能包含了从零开始构建一个简单搜索引擎的全程,从数据读取、索引构建,到查询处理和结果展示。这对于初学者来说,是一个极好的实践平台。 通过深入研究这个项目,开发者可以了解Lucene的...
4. 结果集获取:使用TopDocs类来获取搜索结果,它包含了匹配文档的数量以及按评分排序的文档集合。 四、高级特性 1. 断点续搜:Lucene 3.6支持断点续搜,即在搜索过程中可以暂停并保存状态,之后继续搜索,这对于...
5. **结果排序(Resuliting Sorting)**: 按照评分从高到低排序搜索结果,返回给用户。 ### 三、使用Lucene进行站内搜索 1. **集成Lucene**: 在项目中引入Lucene库,创建索引目录,并实例化IndexWriter用于写入...
总结来说,Lucene搜索引擎的基本工作原理包括建立倒排索引、处理用户查询以及返回相关性最高的结果。同时,Lucene还支持与目录索引的集成,适应各种搜索场景。通过理解这些原理,开发者可以更好地利用Lucene构建高效...
1. **DemoData.java** - 这个文件很可能是包含测试数据或者示例数据的类,用于演示Lucene搜索功能。它可能包含了创建索引所需的文档对象,以及用于搜索的关键词。 2. **MultiPhraseQueryDemo.java** - 这个文件是多...
《Lucene搜索-引擎开发权威经典》是一本深入解析Apache Lucene搜索引擎库的专业书籍,它为读者提供了构建高效全文搜索引擎的全面指南。Lucene是Java领域最著名的全文检索库,被广泛应用于各种信息检索系统中,包括...
共13页07.Lucene搜索实战1 共4页08.Lucene搜索实战2 共5页09.Lucene搜索深入实战1 共5页10....Lucene搜索深入实战进阶4 共5页15.Lucene高级进阶1 共23页16.Lucene高级进阶2 共4页17.Lucene高级进阶3 共4页18.Lucene排序...