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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 分析和分析器 **分析(analysis)**是這樣一個過程: * 首先,標記化一個文本塊為適用于倒排索引單獨的**詞(term)** * 然后標準化這些詞為標準形式,提高它們的“可搜索性”或“查全率” 這個工作是**分析器(analyzer)**完成的。一個**分析器(analyzer)**只是一個包裝用于將三個功能放到一個包里: ### 字符過濾器 首先字符串經過**字符過濾器(character filter)**,它們的工作是在標記化前處理字符串。字符過濾器能夠去除HTML標記,或者轉換`"&"`為`"and"`。 ### 分詞器 下一步,**分詞器(tokenizer)**被標記化成獨立的詞。一個簡單的**分詞器(tokenizer)**可以根據空格或逗號將單詞分開(譯者注:這個在中文中不適用)。 ### 標記過濾 最后,每個詞都通過所有**標記過濾(token filters)**,它可以修改詞(例如將`"Quick"`轉為小寫),去掉詞(例如停用詞像`"a"`、`"and"`、`"the"`等等),或者增加詞(例如同義詞像`"jump"`和`"leap"`) Elasticsearch提供很多開箱即用的字符過濾器,分詞器和標記過濾器。這些可以組合來創建自定義的分析器以應對不同的需求。我們將在《自定義分析器》章節詳細討論。 ### 內建的分析器 不過,Elasticsearch還附帶了一些預裝的分析器,你可以直接使用它們。下面我們列出了最重要的幾個分析器,來演示這個字符串分詞后的表現差異: "Set the shape to semi-transparent by calling set_trans(5)" ### 標準分析器 標準分析器是Elasticsearch默認使用的分析器。對于文本分析,它對于任何語言都是最佳選擇(譯者注:就是沒啥特殊需求,對于任何一個國家的語言,這個分析器就夠用了)。它根據[Unicode Consortium](http://www.unicode.org/reports/tr29/)的定義的**單詞邊界(word boundaries)**來切分文本,然后去掉大部分標點符號。最后,把所有詞轉為小寫。產生的結果為: set, the, shape, to, semi, transparent, by, calling, set_trans, 5 ### 簡單分析器 簡單分析器將非單個字母的文本切分,然后把每個詞轉為小寫。產生的結果為: set, the, shape, to, semi, transparent, by, calling, set, trans ### 空格分析器 空格分析器依據空格切分文本。它不轉換小寫。產生結果為: Set, the, shape, to, semi-transparent, by, calling, set_trans(5) ### 語言分析器 特定語言分析器適用于很多語言。它們能夠考慮到特定語言的特性。例如,`english`分析器自帶一套英語停用詞庫——像`and`或`the`這些與語義無關的通用詞。這些詞被移除后,因為語法規則的存在,英語單詞的主體含義依舊能被理解(譯者注:`stem English words`這句不知道該如何翻譯,查了字典,我理解的大概意思應該是將英語語句比作一株植物,去掉無用的枝葉,主干依舊存在,停用詞好比枝葉,存在與否并不影響對這句話的理解。)。 `english`分析器將會產生以下結果: set, shape, semi, transpar, call, set_tran, 5 注意`"transparent"`、`"calling"`和`"set_trans"`是如何轉為詞干的。 ### 當分析器被使用 當我們**索引(index)**一個文檔,全文字段會被分析為單獨的詞來創建倒排索引。不過,當我們在全文字段**搜索(search)**時,我們要讓查詢字符串經過**同樣的分析流程**處理,以確保這些詞在索引中存在。 全文查詢我們將在稍后討論,理解每個字段是如何定義的,這樣才可以讓它們做正確的事: * 當你查詢**全文(full text)**字段,查詢將使用相同的分析器來分析查詢字符串,以產生正確的詞列表。 * 當你查詢一個**確切值(exact value)**字段,查詢將不分析查詢字符串,但是你可以自己指定。 現在你可以明白為什么《映射和分析》的開頭會產生那種結果: * `date`字段包含一個確切值:單獨的一個詞`"2014-09-15"`。 * `_all`字段是一個全文字段,所以分析過程將日期轉為三個詞:`"2014"`、`"09"`和`"15"`。 當我們在`_all`字段查詢`2014`,它一個匹配到12條推文,因為這些推文都包含詞`2014`: ```sh GET /_search?q=2014 # 12 results ``` 當我們在`_all`字段中查詢`2014-09-15`,首先分析查詢字符串,產生匹配**任一**詞`2014`、`09`或`15`的查詢語句,它依舊匹配12個推文,因為它們都包含詞`2014`。 ```sh GET /_search?q=2014-09-15 # 12 results ! ``` 當我們在`date`字段中查詢`2014-09-15`,它查詢一個**確切**的日期,然后只找到一條推文: ```sh GET /_search?q=date:2014-09-15 # 1 result ``` 當我們在`date`字段中查詢`2014`,沒有找到文檔,因為沒有文檔包含那個確切的日期: ```sh GET /_search?q=date:2014 # 0 results ! ``` ### 測試分析器 尤其當你是Elasticsearch新手時,對于如何分詞以及存儲到索引中理解起來比較困難。為了更好的理解如何進行,你可以使用`analyze` API來查看文本是如何被分析的。在查詢字符串參數中指定要使用的分析器,被分析的文本做為請求體: ```javascript GET /_analyze?analyzer=standard&text=Text to analyze ``` 結果中每個節點在代表一個詞: ```Javascript { "tokens": [ { "token": "text", "start_offset": 0, "end_offset": 4, "type": "<ALPHANUM>", "position": 1 }, { "token": "to", "start_offset": 5, "end_offset": 7, "type": "<ALPHANUM>", "position": 2 }, { "token": "analyze", "start_offset": 8, "end_offset": 15, "type": "<ALPHANUM>", "position": 3 } ] } ``` `token`是一個實際被存儲在索引中的詞。`position`指明詞在原文本中是第幾個出現的。`start_offset`和`end_offset`表示詞在原文本中占據的位置。 `analyze` API 對于理解Elasticsearch索引的內在細節是個非常有用的工具,隨著內容的推進,我們將繼續討論它。 ### 指定分析器 當Elasticsearch在你的文檔中探測到一個新的字符串字段,它將自動設置它為全文`string`字段并用`standard`分析器分析。 你不可能總是想要這樣做。也許你想使用一個更適合這個數據的語言分析器。或者,你只想把字符串字段當作一個普通的字段——不做任何分析,只存儲確切值,就像字符串類型的用戶ID或者內部狀態字段或者標簽。 為了達到這種效果,我們必須通過**映射(mapping)**人工設置這些字段。
                  <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>

                              哎呀哎呀视频在线观看