导读:
HitCollector 的作用很简单,通过collect()方法控制检索返回的结果,下面是lucene自带的一个例子----使用一个优先队
列,返回指定数目的Top n Doc。
package org.apache.lucene.search;
/**
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.IOException;
import java.util.BitSet;
import org.apache.lucene.store.Directory;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.util.PriorityQueue;
/** A {@link HitCollector} implementation that collects the top-
scoring
* documents, returning them as a {@link TopDocs}. This is used by
{@link
* IndexSearcher} to implement {@link TopDocs}-based search.
*
*
This may be extended, overriding the collect method to, e.g.,
* conditionally invoke super()in order to filter which
* documents are collected.
**/
public class TopDocCollector extends HitCollector {
private int numHits;
private float minScore = 0.0f;
int totalHits;
PriorityQueue hq;
/** Construct to collect a given number of hits.
* @param numHits the maximum number of hits to collect
*/
public TopDocCollector(int numHits) {
this(numHits, new HitQueue(numHits));
}
TopDocCollector(int numHits, PriorityQueue hq) {
this.numHits = numHits;
this.hq = hq;
}
// javadoc inherited
public void collect(int doc, float score) {
if (score > 0.0f) {
totalHits++;
if (hq.size() <numhits>= minScore) { <br> hq.insert(new ScoreDoc(doc, score)); <br> minScore = ((ScoreDoc)hq.top()).score; // maintain minScore <br> } <br> } <br> } <br> /** The total number of documents that matched this query. */ <br> public int getTotalHits() {return totalHits; } <br> /** The top-scoring hits. */ <br> public TopDocs topDocs() { <br> ScoreDoc[] scoreDocs = new ScoreDoc[hq.size()]; <br> for (int i = hq.size()-1; i >= 0; i--) // put docs in array <br> scoreDocs[i] = (ScoreDoc)hq.pop(); <br> float maxScore = (totalHits==0) <br> Float.NEGATIVE_INFINITY <br> : scoreDocs[0].score; <br> return new TopDocs(totalHits, scoreDocs, maxScore); <br> } <br> } <br><br>本文转自 <br><a href="http://blog.lough.com.cn/post/234/">http://blog.lough.com.cn/post/234/</a></numhits>
分享到:
相关推荐
lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...
Lucene3.0特性Lucene3.0特性
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
lucene学习教程lucene讲义 叫你用lucene算法
lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
lucene3源码分析
lucene-analyzers-common-4.2.0.jar; lucene-analyzers-kuromoji-4.2.0.jar; lucene-analyzers-phonetic-4.2.0.jar; lucene-codecs-4.2.0.jar; lucene-core-4.2.0.jar; lucene-grouping-4.2.0.jar; lucene-...
Annotated Lucene 中文版 Lucene源码剖析
lucenetest.rar,lucene,全文检索,lucene例子 lucenetest.rar,lucene,全文检索,lucene例子lucenetest.rar,lucene,全文检索,lucene例子
《Lucene实战(第2版)》基于Apache的Lucene 3.0,从Lucene核心、Lucene应用、案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用Tika提取文本...
c#下实现Lucene时间区间查询匹配。主要还是对Lucene查循对像Query的实现
Lucene3.5全部源码,打包jar文件,可以直接打开查看源码,Lucene开发必备
本书深入浅出地介绍了Lucene——一个开源的使用Java语言编写的全文搜索引擎开发包。它通过浅显的语言、大量的图注、丰富的代码示例,以及清晰的结构为读者呈现出作为优秀开源项目的Lucene 所体现的强大功能。全书共...
lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0
Lucene 正则表达式 regexQuery