我想獲得我剛剛添加到Lucene索引的文檔的int docid,以便我可以將其粘貼到Filter中以更新常規查詢。我的文檔具有獨特的外部ID,所以我認爲唯一ID做TermDocs枚舉將返回正確的文檔,像這樣:如何從Lucene 3.0.3獲得可靠的docid?
protected int getDocId(IndexReader reader, String idField, Document doc) throws IOException {
String id = doc.get(idField);
TermDocs termDocs = reader.termDocs(new Term(idField, id));
int docid = -1;
while (termDocs.next()) {
docid = termDocs.doc();
Document aDoc = reader.document(docid);
String docIdString = aDoc.get(idField);
System.out.println(docIdString + ": " + docid);
}
return docid;
}
不幸的是,這個循環和循環,返回相同docIdString和增加docids 。
什麼是推薦的方式來獲取新增文檔的docid,以便我可以在提交文檔後立即在Filter中使用它們?
雖然低於Xodarap的答案是遠遠比上面我的代碼更好,代碼實際工作 - 問題是,我不得不重複的外部IDS由於反覆的調試。 –