org.apache.lucene.search.Hits.java搜索索引
2008-10-28 20:45
447 查看
/**
* Tries to add new documents to hitDocs.
* Ensures that the hit numbered <code>min</code> has been retrieved.
*/
private final void getMoreDocs(int min) throws IOException {
if (hitDocs.size() > min) {
min = hitDocs.size();
}
int n = min * 2; // double # retrieved
TopDocs topDocs = (sort == null) ? searcher.search(weight, filter, n) :
searcher.search(weight, filter, n, sort);
length = topDocs.totalHits;
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
float scoreNorm = 1.0f;
if (length > 0 && topDocs.getMaxScore() > 1.0f) {
scoreNorm = 1.0f / topDocs.getMaxScore();
}
int start = hitDocs.size() - nDeletedHits;
// any new deletions?
int nDels2 = countDeletions(searcher);
debugCheckedForDeletions = false;
if (nDeletions < 0 || nDels2 > nDeletions) {
// either we cannot count deletions, or some "previously valid hits"
might have been deleted, so find exact start point
nDeletedHits = 0;
debugCheckedForDeletions = true;
int i2 = 0;
for (int i1=0; i1<hitDocs.size() && i2<scoreDocs.length; i1++) {
int id1 = ((HitDoc)hitDocs.get(i1)).id;
int id2 = scoreDocs[i2].doc;
if (id1 == id2) {
i2++;
} else {
nDeletedHits ++;
}
}
start = i2;
}
int end = scoreDocs.length < length ? scoreDocs.length : length;
length += nDeletedHits;
for (int i = start; i < end; i++) {
hitDocs.addElement(new HitDoc(scoreDocs[i].score * scoreNorm,
scoreDocs[i].doc));
}
nDeletions = nDels2;
}
* Tries to add new documents to hitDocs.
* Ensures that the hit numbered <code>min</code> has been retrieved.
*/
private final void getMoreDocs(int min) throws IOException {
if (hitDocs.size() > min) {
min = hitDocs.size();
}
int n = min * 2; // double # retrieved
TopDocs topDocs = (sort == null) ? searcher.search(weight, filter, n) :
searcher.search(weight, filter, n, sort);
length = topDocs.totalHits;
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
float scoreNorm = 1.0f;
if (length > 0 && topDocs.getMaxScore() > 1.0f) {
scoreNorm = 1.0f / topDocs.getMaxScore();
}
int start = hitDocs.size() - nDeletedHits;
// any new deletions?
int nDels2 = countDeletions(searcher);
debugCheckedForDeletions = false;
if (nDeletions < 0 || nDels2 > nDeletions) {
// either we cannot count deletions, or some "previously valid hits"
might have been deleted, so find exact start point
nDeletedHits = 0;
debugCheckedForDeletions = true;
int i2 = 0;
for (int i1=0; i1<hitDocs.size() && i2<scoreDocs.length; i1++) {
int id1 = ((HitDoc)hitDocs.get(i1)).id;
int id2 = scoreDocs[i2].doc;
if (id1 == id2) {
i2++;
} else {
nDeletedHits ++;
}
}
start = i2;
}
int end = scoreDocs.length < length ? scoreDocs.length : length;
length += nDeletedHits;
for (int i = start; i < end; i++) {
hitDocs.addElement(new HitDoc(scoreDocs[i].score * scoreNorm,
scoreDocs[i].doc));
}
nDeletions = nDels2;
}
相关文章推荐
- java.lang.NoClassDefFoundError: org/apache/lucene/analysis/synonym/SynonymFilter
- java之全文索引搜索lucene之增删改查文档与中文分词搜索
- LUCENE 高亮器 java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex
- java.lang.NoClassDefFoundError: org/apache/lucene/analysis/standard/StandardAnalyzer 错误
- 使用 Apache Lucene 搜索文本——轻松为应用程序构建搜索和索引功能
- Exception in thread "main" java.lang.NoSuchMethodError: org.apache.lucene.codecs.DocValuesFormat: me
- 保存信息时调用luceneDao中的save方法产生索引,搜索时调用search依据进行查询
- java.lang.ClassNotFoundException: org.apache.lucene.store.Directory
- [搜索]ElasticSearch Java Api(一) -创建索引
- java.lang.NoClassDefFoundError: org/apache/lucene/index/memory/MemoryIndex
- 配置Paoding分词时出现的错误:java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementTo
- java.lang.NoClassDefFoundError: org/apache/lucene/analysis/synonym/SynonymFilter
- 使用org.apache.lucene创建和查询索引核心代码详解
- 配置Paoding分词时出现的错误:java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()
- java之全文索引搜索lucene之增删改查文档
- Elasticsearch in java范例:索引文本数据、搜索文本数据入门
- 使用org.apache.lucene创建和查询索引核心代码详解
- Apache Lucene 4.1 发布,Java 搜索框架
- java.lang.ClassNotFoundException: org.apache.lucene.index.memory.MemoryIndex
- lucene 索引出错 no segments* file found in org.apache.lucene.store.MMapDirectory