如何获取lucene设置的内部doc id

时间:2016-11-24 17:34:56

标签: java lucene

我已将索引模块中的某些文档编入索引。直观地,Lucene为任何索引文档设置IDs。这些IDs可能没有特定的顺序。具体而言,第一个文档ID设置为127,第二个设置为133,依此类推......

在搜索模块中,我有文档(我想要处理),但是我试图获取这些已经设置的docIDs(由Lucene在索引时间设置)参见代码如下:

private long calculateProbabilityOfDocument(String topic, Document doc){   

  Terms termVector = iReader.getTermVector(DOCID, FIELD);
}

修改

我认为Lucene可能不允许我访问内部ID。还有其他方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

几个小时后,终于找到了解决方案。

我发现lucene不允许访问其内部文档ID。但是,我们可以遍历文档并获取他们的TermVector。似乎它是获得术语向量的唯一可能方式。我使用下面的代码:

QueryParser parser = new QueryParser("Body", new EnglishAnalyzer());
Query query = parser.parse(topic);
TopDocs hits = iSearcher.search(query, 1000);
for (int i=0; i<hits.scoreDocs.length; i++){
     Terms termVector = iSearcher.getIndexReader().getTermVector(hits.scoreDocs[i].doc, "Body");
     Document doc = iSearcher.doc(hits.scoreDocs[i].doc);
     documentsList.put(doc, termVector);
}