函式的呼叫構成一棵樹,同等深度的為兄**樹,更深的為更淺的後代。
indexwriter.adddocument
documentswriter.updatedocument
docfieldprocessorperthread.processdocument
storedfieldswriterperthread.addfield
fieldwriter.writefield
ramoutputstream.writevint
ramoutputstream.writebyte
//這裡把要寫的內容放入緩衝區
currentbuffer[bufferposition++] = b;
ramoutputstream.writebyte
ramoutputstream.writestring
docinverterperfield.processfields
indexwriter.commit
indexwriter.commitinternal
indexwriter.preparecommit
indexwriter.doflush
documentswriter.flush
docfieldprocessor.flush
storefieldwriter.finish
storefieldwriter.close
ioutils.close
fsdirectory.close
fsdirectory.flush
fsdirectory.flushbuffer
//這裡最終寫入磁碟檔案
randomaccessfile.write
indexwriter.add(segmentinfo)
buffereddeletesstream.prune(segmentinfos)
indexwriter.clearflushpending
indexwriter.commit(segmentinfos)
segmentinfos.files(directory)
indexwriter.startcommit(segmentinfos)
indexwriter.finishcommit
indexwriter.closeinternal
indexwriter.close
Lucene查詢的函式呼叫關係
indexsearcher.search indexsearcher.createnormalizedweight query phrasequery.createweight new phraseweight indexsearcher.getsimilarity defaultsimilarit...
Lucene的平行索引
有時對於乙個document來說,有一些field會被頻繁地操作,而另一些field則不會。這時可以將頻繁操作的field和其他field分開存放,而在搜尋時同時檢索這兩部分field而提取出乙個完整的document。這要求兩個索引包含的document的數量必須相同。在建立索引的時候,可以同時建...
Lucene索引的建立
lucene索引的建立 1.搜尋引擎之所以檢索速度快其中乙個因素就是對索引的建立。就好像書籍的目錄,可以讓我們迅速定位到內容。這裡引用一張圖說明搜尋過程。從圖中可以很清晰的看到乙個搜尋系統,三個部分 收集資料整理成索引文件,這個過程多是確定你需要檢索的資訊。比如如果你需要檢索圖書館中的書。那麼你可能...