Lucene 索引的併發讀寫

2021-09-23 17:47:48 字數 540 閱讀 8962

lucene能夠很好地支援多執行緒/程序 訪問。

乙個索引可以被多個程序的indexreader開啟。乙個程序中,推薦indexreader被單例多執行緒使用。

indexreader類不僅是執行緒安全的,還是執行緒友好的,即友好地支援併發訪問,**中同步**(synchronized)塊並不多。

對於乙個索引來說,一次只能開啟乙個indexwriter。

lucene採用了基於檔案的鎖。如果鎖檔案

write.lock存在於目錄內,那麼建立新的indexwriter就會失敗,丟擲lockobtainfailedexception異常。

lucene允許我們修改鎖的實現,通過呼叫directory,setlockfactory()傳入自定義的子類。

indexreader可以在indexwriter正在修改索引時被開啟。每個indexreader物件將向索引展示自己

被開啟的時間點。該物件只有在writer提交修改後才感知到索引變化。

開啟indexreader'時採用引數create=true,reader就會持續檢查索引的情況。

Lucene 索引的併發讀寫

lucene能夠很好地支援多執行緒 程序 訪問。乙個索引可以被多個程序的indexreader開啟。乙個程序中,推薦indexreader被單例多執行緒使用。indexreader類不僅是執行緒安全的,還是執行緒友好的,即友好地支援併發訪問,中同步 synchronized 塊並不多。對於乙個索引來...

通過佇列解決Lucene檔案併發建立索引

public sealed class searchindexmanager public static searchindexmanager getinstance queue queue new queue 向佇列中新增資料 public void addqueue string id,stri...

Lucene的平行索引

有時對於乙個document來說,有一些field會被頻繁地操作,而另一些field則不會。這時可以將頻繁操作的field和其他field分開存放,而在搜尋時同時檢索這兩部分field而提取出乙個完整的document。這要求兩個索引包含的document的數量必須相同。在建立索引的時候,可以同時建...