<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之旅 廣告
                ## 倒排索引 Elasticsearch使用一種叫做**倒排索引(inverted index)**的結構來做快速的全文搜索。倒排索引由在文檔中出現的唯一的單詞列表,以及對于每個單詞在文檔中的位置組成。 例如,我們有兩個文檔,每個文檔`content`字段包含: 1. The quick brown fox jumped over the lazy dog 2. Quick brown foxes leap over lazy dogs in summer 為了創建倒排索引,我們首先切分每個文檔的`content`字段為單獨的單詞(我們把它們叫做**詞(terms)**或者**表征(tokens)**)(譯者注:關于`terms`和`tokens`的翻譯比較生硬,只需知道語句分詞后的個體叫做這兩個。),把所有的唯一詞放入列表并排序,結果是這個樣子的: |Term | Doc_1 |Doc_2| |--------|-------|-----| |Quick | | X | |The | X | | |brown | X | X | |dog | X | | |dogs | | X | |fox | X | | |foxes | | X | |in | | X | |jumped | X | | |lazy | X | X | |leap | | X | |over | X | X | |quick | X | | |summer | | X | |the | X | || 現在,如果我們想搜索`"quick brown"`,我們只需要找到每個詞在哪個文檔中出現即可: |Term | Doc_1 |Doc_2| |-----|-------|-----| |brown| X | X | |quick| X | | |-----|-------|-----| |Total| 2 | 1 | 兩個文檔都匹配,但是第一個比第二個有更多的匹配項。 如果我們加入簡單的**相似度算法(similarity algorithm)**,計算匹配單詞的數目,這樣我們就可以說第一個文檔比第二個匹配度更高——對于我們的查詢具有更多相關性。 但是在我們的倒排索引中還有些問題: 1. `"Quick"`和`"quick"`被認為是不同的單詞,但是用戶可能認為它們是相同的。 2. `"fox"`和`"foxes"`很相似,就像`"dog"`和`"dogs"`——它們都是同根詞。 3. `"jumped"`和`"leap"`不是同根詞,但意思相似——它們是同義詞。 上面的索引中,搜索`"+Quick +fox"`不會匹配任何文檔(記住,前綴`+`表示單詞必須匹配到)。只有`"Quick"`和`"fox"`都在同一文檔中才可以匹配查詢,但是第一個文檔包含`"quick fox"`且第二個文檔包含`"Quick foxes"`。(譯者注:這段真啰嗦,說白了就是單復數和同義詞沒法匹配) 用戶可以合理地希望兩個文檔都能匹配查詢,我們也可以做得更好。 如果我們將詞為統一為標準格式,這樣就可以找到不是確切匹配查詢,但是足以相似從而可以關聯的文檔。例如: 1. `"Quick"`可以轉為小寫成為`"quick"`。 2. `"foxes"`可以被轉為根形式`"fox"`。同理`"dogs"`可以被轉為`"dog"`。 3. `"jumped"`和`"leap"`同義就可以只索引為單個詞`"jump"` 現在的索引: |Term | Doc_1 |Doc_2| |--------|-------|-----| |brown | X | X | |dog | X | X | |fox | X | X | |in | | X | |jump | X | X | |lazy | X | X | |over | X | X | |quick | X | X | |summer | | X | |the | X | X | 但我們還未成功。我們的搜索`"+Quick +fox"`*依舊*失敗,因為`"Quick"`的確切值已經不在索引里,不過,如果我們使用相同的標準化規則處理查詢字符串的`content`字段,查詢將變成`"+quick +fox"`,這樣就可以匹配到兩個文檔。 >### IMPORTANT >這很重要。你只可以找到確實存在于索引中的詞,所以**索引文本和查詢字符串都要標準化為相同的形式**。 這個標記化和標準化的過程叫做**分詞(analysis)**,這個在下節中我們討論。
                  <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>

                              哎呀哎呀视频在线观看