<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國際加速解決方案。 廣告
                Elasticsearch 使用一種稱為倒排索引的結構,它適用于快速的全文搜索。 <br/> 見其名,知其意,有倒排索引,肯定會對應有正向索引。正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。 <br/> 所謂的正向索引,就是搜索引擎會將待搜索的文件都對應一個文件 ID,搜索時將這個ID 和搜索關鍵字進行對應,形成 K-V 對,然后對關鍵字進行統計計數。 :-: ![](https://img.kancloud.cn/7a/b9/7ab99107fb8cd103d1a6936a0d898cbb_534x242.png) 正向索引 但是互聯網上收錄在搜索引擎中的文檔的數目是個天文數字,這樣的索引結構根本無法滿足實時返回排名結果的要求。所以,搜索引擎會將正向索引重新構建為倒排索引,即把文件ID對應到關鍵詞的映射轉換為關鍵詞到文件ID的映射,每個關鍵詞都對應著一系列的文件,這些文件中都出現這個關鍵詞。 :-: ![](https://img.kancloud.cn/fc/32/fc32ecc42263d1501574dd41295841b4_529x262.png) 倒排索引 一個倒排索引由文檔中所有不重復詞的列表構成,對于其中每個詞,有一個包含它的文檔列表。例如,假設我們有兩個文檔,每個文檔的 content 域包含如下內容: * The quick brown fox jumped over the lazy dog * Quick brown foxes leap over lazy dogs in summer 為了創建倒排索引,我們首先將每個文檔的 content 域拆分成單獨的 詞(我們稱它為 詞條或 tokens ),創建一個包含所有不重復詞條的排序列表,然后列出每個詞條出現在哪個文檔。結果如下所示: :-: ![](https://img.kancloud.cn/93/05/9305b000d87c538a4e60d5c5877f2201_218x369.png) 現在,如果我們想搜索 quick、brown ,我們只需要查找包含每個詞條的文檔: :-: ![](https://img.kancloud.cn/52/3a/523a9de4eb90d9b8553fa7b3f04e9d8e_302x191.png) 兩個文檔都匹配,但是第一個文檔比第二個匹配度更高。如果我們使用僅計算匹配詞條數量的簡單相似性算法,那么我們可以說,對于我們查詢的相關性來講,第一個文檔比第二個文檔更佳。 <br/> 但是,我們目前的倒排索引有一些問題: * Quick 和 quick 以獨立的詞條出現,然而用戶可能認為它們是相同的詞。 * fox 和 foxes 非常相似, 就像 dog 和 dogs ;他們有相同的詞根。 * jumped 和 leap, 盡管沒有相同的詞根,但他們的意思很相近。他們是同義詞。 使用前面的索引搜索 +Quick +fox 不會得到任何匹配文檔。(記住,+ 前綴表明這個詞必須存在。)只有同時出現 Quick 和 fox 的文檔才滿足這個查詢條件,但是第一個文檔包含quick fox ,第二個文檔包含 Quick foxes 。 <br/> 我們的用戶可以合理的期望兩個文檔與查詢匹配。我們可以做的更好。 <br/> 如果我們將詞條規范為標準模式,那么我們可以找到與用戶搜索的詞條不完全一致,但具有足夠相關性的文檔。例如: * Quick 可以小寫化為 quick 。 * foxes 可以 詞干提取 --變為詞根的格式-- 為 fox 。類似的, dogs 可以為提取為 dog 。 * jumped 和 leap 是同義詞,可以索引為相同的單詞 jump 。 現在索引看上去像這樣: :-: ![](https://img.kancloud.cn/c5/7f/c57fb8bee97e4200f95dc7dd4efa065d_277x350.png) 這還遠遠不夠。我們搜索 +Quick +fox 仍然 會失敗,因為在我們的索引中,已經沒有 Quick 了。但是,如果我們對搜索的字符串使用與 content 域相同的標準化規則,會變成查詢+quick +fox,這樣兩個文檔都會匹配!分詞和標準化的過程稱為**分析**。這非常重要。你只能搜索在索引中出現的詞條,所以索引文本和查詢字符串必須標準化為相同的格式。
                  <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>

                              哎呀哎呀视频在线观看