我已将索引模块中的某些文档编入索引。直观地,Lucene为任何索引文档设置IDs
。这些IDs
可能没有特定的顺序。具体而言,第一个文档ID设置为127
,第二个设置为133
,依此类推......
在搜索模块中,我有文档(我想要处理),但是我试图获取这些已经设置的docIDs
(由Lucene在索引时间设置)参见代码如下:
private long calculateProbabilityOfDocument(String topic, Document doc){
Terms termVector = iReader.getTermVector(DOCID, FIELD);
}
修改
我认为Lucene可能不允许我访问内部ID。还有其他方法吗?
提前致谢!
答案 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);
}