<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 總體架構 <div style="text-indent:2em;"> <p>盡管我希望直奔主題,介紹Lucene的架構,但是首先必須理解一些概念才能更好地理解Lucene的架構,這些概念是:</p> <hr> <ul> <li><b>Document</b>:&nbsp;&nbsp;它是在索引和搜索過程中數據的主要表現形式,或者稱“載體”,承載著我們索引和搜索的數據,它由一個或者多個域(Field)組成。 </li> <li><b>Field</b>:&nbsp;&nbsp; 它是Document的組成部分,由兩部分組成,名稱(name)和值(value)。</li> <li><b>Term</b>:&nbsp;&nbsp;它是搜索的基本單位,其表現形式為文本中的一個詞。</li> <li><b>Token</b>:&nbsp;&nbsp;它是單個Term在所屬Field中文本的呈現形式,包含了Term內容、Term類型、Term在文本中的起始及偏移位置。</li> </ul> <hr> <p>Apache Lucene把所有的信息都寫入到一個稱為**倒排索引**的數據結構中。這種數據結構把索引中的每個Term與相應的Document映射起來,這與關系型數據庫存儲數據的方式有很大的不同。讀者可以把倒排索引想象成這樣的一種數據結構:數據以Term為導向,而不是以Document為導向。下面看看一個簡單的倒排索引是什么樣的,假定我們的Document只有title域(Field)被編入索引,Document如下:</p> * ElasticSearch Servier (document 1) * Mastering ElasticSearch (document 2) * Apache Solr 4 Cookbook (document 3) 所以索引(以一種直觀的形式)展現如下: | Term | count | Docs | | -- | -- | -- | | 4 | 1 | <3> | |Apache | 1 | <3> | | Cookbook | 1 | <3> | | ElasticSearch | 2 | <1> <2> | | Mastering | 1 | <1> | | Server | 1 | <1> | | Solr | 1 | <3> | <br/><br/> <p>正如所看到的那樣,每個詞都指向它所在的文檔號(Document Number/Document ID)。這樣的存儲方式使得高效的信息檢索成為可能,比如基于詞的檢索(term-based query)。此外,每個詞映射著一個數值(Count),它代表著Term在文檔集中出現的頻繁程度。 </p> <br/> <p>當然,Lucene創建的真實索引遠比上文復雜和先進。這是因為在Lucene中,<b>詞向量</b>(由單獨的一個Field形成的小型倒排索引,通過它能夠獲取這個特殊Field的所有Token信息)可以存儲;所有Field的原始信息可以存儲;刪除Document的標記信息可以存儲……。核心在于了解數據的組織方式,而非存儲細節。</p> <br/> <p>每個索引被分成了多個段(Segment),段具有一次寫入,多次讀取的特點。只要形成了,段就無法被修改。例如:被刪除文檔的信息被存儲到一個單獨的文件,但是其它的段文件并沒有被修改。</p><br/> <p>需要注意的是,多個段是可以合并的,這個合并的過程稱為<b>segments merge</b>。經過強制合并或者Lucene的合并策略觸發的合并操作后,原來的多個段就會被Lucene創建的更大的一個段所代替了。很顯然,段合并的過程是一個I/O密集型的任務。這個過程會清理一些信息,比如會刪除.del文件。除了精減文件數量,段合并還能夠提高搜索的效率,畢竟同樣的信息,在一個段中讀取會比在多個段中讀取要快得多。但是,由于段合并是I/O密集型任務,建議不好強制合并,小心地配置好合并策略就可以了。<p> <!--note structure --> <div style="height:110px;width:650px;text-indent:0em;"> <div style="float:left;width:13px;height:100%; background:black;"> <img src="../lm.png" height="100px" width="13px" style="margin-top:5px;"/> </div> <div style="float:left;width:50px;height:100%;position:relative;"> <img src="../note.png" style="position:absolute; top:30%; "/> </div> <div style="float:left; width:550px;height:100%;"> <p style="font-size:13px;"><br/>如果想了解段由哪些文件組成,想了解每個文件中存儲了什么信息,可以參考Apache Lucene documentation ,訪問地址:http://lucene.apache.org/core/4_5_0/core/org/apache/lucene/codecs/lucene45/package-summary.html.</p> </div> <div style="float:left;width:13px;height:100%;background:black;"> <img src="../rm.png" height="100px" width="13px" style="margin-top:5px;"/> </div> </div> <!-- end of note structure --> </div>
                  <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>

                              哎呀哎呀视频在线观看