2012-03-18 65 views
0

如果間隔不一致,則需要更新Lucene索引中的特定文檔。更新可能是每小時或每隔幾分鐘。目前,我有一個運行並查找更改的進程,如果發生更改,它(以Lucene 3.5時尚方式)將刪除該文檔,然後將其重新添加到RAMDirectory中。更新RAMDirectory的最佳方式

  1. 有沒有更好的方法來管理不斷變換的文檔的Lucene索引? RAMDirectory是最佳選擇嗎?

我用 「更新」 的指數代碼:

Term idTerm = new Term("uid",row.getKey()); 
getWriter().deleteDocuments(idTerm); 
getWriter().commit(); 
// do some fun stuff creating a new doc with the changes 
getWriter().addDocument(doc); 
+0

每次更新文檔後都必須搜索文檔嗎?最簡單的方法是在不改變太多的情況下,延遲更新文檔直到一個固定的時間間隔 - 比如說每個小時 - 然後將它作爲批量傳遞並累積時間X和Y之間的所有更新。這會減少一些刪除每幾分鐘的性能開銷。 – FloppyDisk 2012-03-19 12:40:34

回答