Lucene4.3開發之第九步之渡劫中期(九)

下圖是一個典型的Lucene4.X的索引結構圖:
性能

Lucene4.x以後的全部索引格式以下:優化

複合索引文件是指,除了段信息文件,鎖文件,以及刪除的文件外,其餘的一些列索引文件壓縮一個後綴名爲cfs的文件,意思,就是全部的索引文件會被存儲成一個單例的Directory,而非複合索引是靈活的,能夠單獨的訪問某幾個索引文件,而複合索引文件嘖不能夠,由於其壓縮成一個文件,因此在某些場景下可以獲取更高的效率,好比說,查詢頻繁,而不常常更新的需求,就很適合這種索引格式。spa

lucene索引的基本概念組成有,索引、文檔、域和項組成,一個索引,一般包含一些序列的文檔,一個文檔(doc)包含一些序列的域(field),而一些域有包含一些序列的項,而一些項則包含一些序列最底層的字節,注意這裏的序列指的是在索引結構中有序,一般有序的這種格式,某些狀況下能夠優化索引的結構。
設計

lucene使用了倒排索引(Inverted Indexing),來存儲索引信息,大大提升了索引效率。索引

倒排索引,舉一個通俗的例子,原來基於人們的正常思惟,咱們會存儲的是一個文章中出現了那幾個單詞,而倒排索引,卻偏偏相反,它存儲的是這個單詞,包含在幾個文檔中,固然這個關係是由倒排鏈表(存儲一些列docid)構成的索引,咱們在檢索時,經過這個單詞能夠快速定位,他出如今幾篇文章中,從而大大提高了檢索的性能。ci

固然lucene中不單單有倒排索引,也有正向的存儲,而倒排之因此是lucene的核心,是由於它提高了檢索的性能,在檢索到一個個具體的文檔時,就須要咱們正向的拿出這些信息,反映在實際的代碼中就是咱們經過檢索獲取的一個個docid,而後經過一個個docid獲取整個文檔,而後咱們在正向的獲取各個域,以及各個項存儲的具體信息,固然前提是你存儲了這個字段,若是你只是索引而沒有存儲,那麼你只能檢索到此條信息,但沒法獲取具體的term的值,這個須要在建索引以前就要設計好,索引的存儲結構,哪些字段是檢索的,哪些字段是存儲的等等,若是你還須要高亮一些內容,則還須要存儲這個域的偏移的位置,經過這樣就能準確的在文中標記檢索名中的關鍵詞,若是你打算在前臺來完成這個高亮,就不要存儲這些信息了。文檔

相關文章
相關標籤/搜索