<clk>OSPod.Forum使用Lucene作为搜索引擎核心,对于Lucene的分页,OSPod对Hits进行了二次封装,取出所需结果集后,关闭Hits,极大提高搜索效率。参考代码如下:</clk>
/**
*索引分页对象
*/
privatePaginationpage;
/**
*命中结果数据数
*/
privateinthitsLength=0;
/**
*当前分页的命中结果集
*/
privateListresults;
/**
*用于分页的最大结果数
*/
privateinttotal=0;
/**
*构造方法,创建并初始化索引结果集对象
*@paramhits查询命中结果
*@param<clk>start结果集提取其实位置</clk>
*@paramcount当前提取数
*@paramtotalLimit用于分页的最大结果集数,限制提取的最大结果数有利于提供系统查询性能
*/
publicIndexResultSet(Hitshits,intstart,intcount,inttotalLimit){
results=newArrayList();
page=PaginationUtils.create();
hitsLength=hits.length();
if(hitsLength>totalLimit){
total=totalLimit;
}else{
total=hitsLength;
}
intpageSize=count;
if(start+count>total){
count=total-start;
}
page.init(start,count,total,pageSize);
intend=start+count;
try{
Documentdoc;
for(inti=start;i<end;i++){
doc=hits.doc(i);
Iteratoriter=doc.getFields().iterator();
EMapdata=newEMap();
Stringname,value,lvalue;
while(iter.hasNext()){
Fieldf=(Field)iter.next();
name=f.name();
value=doc.get(name);
data.setValue(name,value);
}
data.setValue("score__",hits.score(i));
data.setValue("docid__",hits.id(i));
results.add(data);
}
}catch(IOExceptionex){
thrownewIndexException("索引结果集获取出错",ex);
}
}
分享到:
相关推荐
这些类会封装了Lucene的相关操作,比如创建索引、执行搜索、处理查询结果等。 综合以上信息,这个压缩包可能包含以下知识点: 1. **Lucene核心概念**:如倒排索引、分词器、Analyzer(分析器)的使用,以及如何...
而第二种思路就是,我直接从搜索到的结果集种显示前十条给第一页显示,第二页的时候,我在查询一次,给出10-20条数据给第二页显示,我每次翻页都要重新查询 第三种思路就变成了 我第一页仅需要10条数据,但是我一次读出来...
基于java的lucene 5.2的封装,主要包括lucene的各种查询方法、建索引方法的实现,为使用lucene开发者提供便利,而不需要过多的lucene知识即可使用,具体使用方法请到github上download,里面有完整的demo。...
- **分页 (Paging)**:通过设置`start`和`rows`参数实现分页查询,避免一次性加载大量结果导致性能下降。 总结,Lucene的查询语法是其强大功能的核心,理解和掌握这些概念及技巧,能够帮助我们构建更高效、精准的...
分页查询是Web应用中常见的需求,当结果集庞大时,一次性返回所有结果不仅效率低下,也会消耗大量内存。在Lucene中,我们可以使用`TopDocs`和`ScoreDoc`来实现分页。`TopDocs`包含了查询结果的总体信息,如总匹配数...
封装查询构建器可以将用户输入转换为Lucene理解的Query对象。例如,可以创建一个QueryParser类,处理用户输入的关键词,进行分词、分析和逻辑组合,生成相应的Query实例。 #### 2.3 搜索服务 封装搜索服务是为了...
- **Hits**:存储查询结果的集合,按相关性排序,方便结果展示和处理。 5. **查询类型**: - **TermQuery**:是最基本的查询类型,用于精确匹配单个词,大小写敏感。可以通过TermQuery构造函数或者QueryParser...
本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene多字段查询”。在信息检索系统中,用户可能希望根据多个字段来过滤和排序结果...
**SpringBoot+Lucene搜索结果高亮显示** 在现代Web应用程序中,强大的全文搜索引擎功能是不可或缺的,而Apache Lucene正是这样一个高效的、可扩展的开源全文检索库。在这个SpringBoot+Lucene的Demo中,我们将深入...
Lucene的核心功能包括文档索引、查询解析、评分以及结果排序。通过这本书,读者可以学习如何使用Lucene进行文本分析、建立倒排索引、执行复杂的查询,并优化搜索性能。 书中详细讲解了以下几个关键知识点: 1. **...
《Lucene实战(第二版)》是一本深入探讨Apache Lucene全文搜索引擎库的权威书籍,主要面向对Java和搜索引擎技术感兴趣的开发者。这本书详尽地介绍了如何利用Lucene进行信息检索、文本分析和索引构建,同时也涵盖了...
根据给定文件信息,这里将详细介绍关于《Lucene in Action 第二版》书籍的知识点。这本书是关于Java Lucene教程的,主要面向开发者学习使用Lucene进行搜索引擎开发。 ### 书名知识点: 《Lucene in Action 第二版...
首先,我们需要了解Lucene的基本操作流程,包括索引构建、查询解析和结果检索。在C#中,我们可以使用Apache.Lucene.Net库来操作Lucene。创建索引时,我们需要将包含时间戳的文档字段(如"created_at"或"modified_...
在大型数据集的搜索场景中,一次性显示所有结果并不实际,因此分页查询允许用户逐步浏览搜索结果,提高用户体验并减轻服务器压力。在Lucene中,我们可以使用`IndexSearcher`类配合`TopDocs`和`ScoreDoc`来实现分页。...
lucene 做索引查询流程,来自《lucene in action》
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。 3.MUST_NOT和MUST_NOT:无意义,检索无结果。 4.SHOULD与MUST、SHOULD与MUST_NOT: SHOULD与MUST连用时,无意义,结果为MUST子句...
《Lucene in Action 第二版》是一本深入探讨Apache Lucene全文检索库的专业书籍,它在Java开发领域具有很高的权威性。这本书详细介绍了如何利用Lucene进行高效的文本搜索和索引构建,是Java开发者和信息检索爱好者的...
**Lucene Facet查询详解** Lucene是一款强大的全文搜索引擎库,广泛应用于各种信息检索系统。在处理大量数据时,为了帮助用户快速、有效地探索和理解数据,Lucene引入了Facets(方面)功能,它提供了分类浏览和统计...
在Lucene中,表达式查询是一种高级查询方式,允许用户通过特定的语法构造复杂的查询条件。本篇文章将深入探讨Lucene表达式处理查询的原理、语法及示例。 ### 1. Lucene表达式查询基础 Lucene表达式查询是基于...