A ScoreDoc[]
數組包含來自搜索的所有文檔ID。我想使用這些文檔ID來更新單個文檔。在這個特定的實例中,我不能唯一地標識我希望更新的行,因爲給定的術語將導致匹配多個文檔。是否可以使用其文檔ID更新Lucene文檔?
想象一個1查詢:一,2:B和下列文件返回
1 2 3 4 5 6
doc 1: a b c d e f
doc 2: a b g h i j
doc 3: a b k l m n
我基本上是做一個更新的字段3和4,但要離開5和6完好無損。
目前我可以抓住這些行,進行我想要的更新,但是我找不到在索引中更新它們的方法。
indexWriter.updateDocuments(...)
或indexwriter.DeleteDocuments(...)
將導致文檔1,2,3被刪除。
由於我有documentId,我認爲有一種方法可以讓我用它更新索引。
爲了澄清,IndexWriter.UpdateDocument(期限,文件)只刪除具有長期_all_文件,然後將所提供的文檔。對於特定的IndexReader實例,文檔標識符是靜態的和不變的(因爲在打開/重新打開閱讀器之前不會使用合併)。只要您還跟蹤與其關聯的讀取器實例,就可以跟蹤文檔標識符。 – sisve