2016-11-24 36 views
0

我已經索引索引模塊中的一些文檔。直觀地說,Lucene爲任何索引的文檔設置ids。但是這些ids沒有特定的順序。如何獲得由lucene設置的內部文檔ID

例如第一DOC ID設置爲127,第二個被設置爲133等等...

在搜索模塊,我有文件(這是我想要處理),但我「M試圖讓這些docIds(這是在指數時間Lucene的設置)參見下文代碼:

private long calculateProbabilityOfDocument(String topic, Document doc){ 

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

編輯:

我把Lucene可能不會讓我訪問內部ID。還有其他方法嗎?

在此先感謝。

回答

1

幾個小時後,最後我找到了解決方案。

我發現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); 
}