我正在寫一個自定義lucenene目錄實現,並想知道爲什麼IndexWriter鎖定整個目錄實例,而不是鎖定文件。爲什麼Lucene會鎖定整個Directory?爲什麼不鎖定個別lucene文件?
我對Lucene內部結構還不是很熟悉,但是到目前爲止我所讀到的,我想限制每個'luce索引文件類型'的每個實例的鎖定,以支持多個索引器的併發索引
我相信,如果這是如此簡單,許多人現在已經做到了;所以想知道爲什麼不這樣做,以及爲什麼整個目錄被鎖定...
有人可以解釋爲什麼這樣做的原因,以及爲什麼不做我建議的原因?
感謝, 桑巴
Mindas嗨, 我建議鎖定在更新場數據爲第n段_n.fdt文件,同樣鎖定_n.fdx而upadting爲第n個部段場指數等 或者,如果這也不行,我們可能會鎖定特定段的所有lucene格式文件;或者可能是我們鎖定了所有段的特定lucene格式文件。 我想知道每種方法的缺點,或者如果沒有安全的工作,請清除NO。 – Saasira
爲了您的所知,現場數據永遠不會更新 - 每次您想更新索引文檔時,作者都會刪除舊文檔,並將其與已更改的字段一起再次添加。所以這個操作沒有特別的鎖定。段文件名不會重複使用,但始終會遞增(字母數字基本形式)。文件write.lock只確保一個'IndexWriter'可以在當時使用該目錄,但這並不意味着'IndexWriter'只允許單個線程寫入。 – mindas
我在看從多臺機器索引到一個共同的索引;因此提出了放寬鎖定機制從特定目錄到特定文件或特定格式的問題。 – Saasira