<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                轉載請注明出處:[http://blog.csdn.net/xiaojimanman/article/details/42836309](http://blog.csdn.net/xiaojimanman/article/details/42836309) 前面我們已經介紹了非結構數據的檢索過程以及lucene的數學模型,這篇博客就主要介紹一下lucene索引的文件結構,下圖是lucene生成的索引實例: ![](https://box.kancloud.cn/2016-02-22_56ca7bed288d7.jpg) lucene索引結構是層次結構,主要有以下幾個層次: **索引(Index)** 在lucene中,一個索引是放在一個文件夾中的,上述實例中的所有文件就組成了lucene索引 **段(Segment)** 一個索引中可以有很多段,段與段之間是獨立的,添加新的文檔可能會生成新段,不同的段可以合并生成一個新段,上圖中相同的前綴文件就屬于同一個段(圖中共有兩個段 ?_0 和 _1),當段的個數達到一定數量,段與段直接會合并,生成新段;segments.gen和segment_2既是段的元數據文件,也保存了段的屬性信息。 **文檔(Document)** 文檔是創建索引的基本單位,不同的文檔保存在不同的段中,一個段可以包含所個文檔,新添的文檔保存在一個新生成的一個段中,隨著段的合并,不同的段會合并成一個新段。 **域(Field)** 一個文檔包含不同類型的信息,可以拆分開索引,比如小說信息可以有書名、作者名、更新時間、簡介、更新時間等屬性,這些都可以保存在不同的域中。 **詞(Term)** 詞是索引的最小單位,是經過詞法分析和語言處理后的字符串,[上篇博客中](http://blog.csdn.net/xiaojimanman/article/details/42818185)的N維空間向量,每一個維度都是一個詞。 **正向信息&反向信息** lucene的索引結構中,即保存了正向信息,也保存了反向信息。所謂的正向信息就是安層次保存了從索引一直到詞的包含關系:索引-->段-->文檔-->域-->詞,即此索引包含了哪些段,每個段包含了哪些文檔,每個文檔包含了哪些域,每個域域又包含了那些詞。 如上圖中,包含正向信息的文件有: segment_2 保存了此索引包含了多少段,每個段包含了多少篇文檔; xxx.fdx , xxx.fdt 保存了此段的所有文檔,每篇文檔包含了多少域,每個域保存了哪些信息; xxx.fnm 保存了此段包含了多少域,每個域的名稱以及索引方式; xxx.tvx , xxx.tvd , xxx.tvf 保存了此段包含了多少文檔,每篇文檔包含了多少域,每個域包含了多少詞,每個詞的字符串、位置等信息。 (這里需要說聲歉意,上圖的索引文件截圖是基于lucene4.3.1創建出來的,文件結構和之前的版本有了很大的改動,自己查找了很多資料都沒有找到新的對應關系,所以這部分還是按照之前的文件結構來介紹的,最后后附錄之前的索引文件結構) 所謂反向信息保存了詞典的倒排表的映射:詞-->文檔,包含反向信息的文件有: xxx.tis xxx.tii 保存了詞典,即此段包含的所有的詞按字典的順序排序; xxx.frd 保存了倒排表,也即是每個詞的文檔ID列表; xxx.prx 保存了倒排表中的每個詞在文檔中的位置。 **lock** 上圖中還有一個重要的write.lock文件,lucene中目前有write.lock和commit.lock兩種,write.lock是在對索引文件進行修改的時候生成的,這個時候IndexWrite的操作或者IndexReader 刪除Document或取消刪除都會拋出異常;commit.lock是在segments文件被讀取活合并的時候生成的,當IndexReader讀取索引文件之前會獲得commit.lock,當segments被讀取完畢的時候會被釋放。 lucene3.0的索引文件結構如下圖: ![](https://box.kancloud.cn/2016-02-22_56ca7bed4a06f.jpg) 注:關于lucene4.3.1創建的文件結構自己將會繼續查找相關資料,希望可以早日找到相關說明;如誰了解該問題,還請給出相關介紹或鏈接。 ps: lucene的原理部分就到這里結束了,下篇博客就開始介紹一些案例中可能會用到的API。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看