lucene中發(fā)生實時索引的措施.(2011-07-23 01:14:12)
過去看到網(wǎng)上一些措施都是說先發(fā)生內(nèi)存索引,在定期將內(nèi)存索引保留到磁盤,來告終實時的索引的功能。Lucene in action中也沒提如何發(fā)生實時索引的措施,不過lucene3.0.3中加入了實時索引的API,能夠大大簡化發(fā)生實時索引的工作量,本人也是在偶爾翻閱lucene 的java doc中覺察的。 新的接口為IndexWriter.getReader() ,歸來一個IndexReader對象,該對象能夠cover所有IndexWriter曾經(jīng)commit和未commitlo.rialogo.com的壟斷,因而在IndexWriter 將索引commit到磁盤之前,就能夠索引到新加入的document. 不過歸來的IndexReader 無法獲得索引是否曾經(jīng)改變的消息,穿越IndexReader().getVersion() 獲得的版本號每次都是一樣的,無法判別索引是否曾經(jīng)更新. 而穿越IndexWriter.getReader()歸來的IndexReader必需reopen能力獲得到新的更新,為了避免每次查詢都reopen,能夠設置一個update符號,索引改變時update 設置為truedm.dmtyu.com, reopen后設置為false, 這么能夠保證才索引更新時才去reopen. 在多線程查詢的情形下,對IndexReader的管教,能夠參看lucene in action 10.2.2 Using threads for searching。不幸的是,隨著工夫的挪動,客戶代碼可能會改換歸來的Dimension對象的值,這個時候,追尋訛謬的起源是件枯燥且費時的事情,尤其是在多線程環(huán)境中。 |
|
來自: CevenCheng > 《時時搜索》