<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 內置了一系列的分析器,但是真正的強大之處在于定制你自己的分析器。你可以通過在配置文件中組合字符過濾器,分詞器和標記過濾器,來滿足特定數據的需求。 在 【分析器介紹】 中,我們提到 _分析器_ 是三個順序執行的組件的結合(字符過濾器,分詞器,標記過濾器)。 字符過濾器 > 字符過濾器是讓字符串在被分詞前變得更加“整潔”。例如,如果我們的文本是 HTML 格式,它可能會包含一些我們不想被索引的 HTML 標簽,諸如 `<p>` 或 `<div>`。 > 我們可以使用 [`html_strip` 字符過濾器](http://bit.ly/1B6f4Ay) 來刪除所有的 HTML 標簽,并且將 HTML 實體轉換成對應的 Unicode 字符,比如將 `&Aacute;` 轉成 `á`。 > 一個分析器可能包含零到多個字符過濾器。 分詞器 > 一個分析器 _必須_ 包含一個分詞器。分詞器將字符串分割成單獨的詞(terms)或標記(tokens)。`standard` 分析器使用 [`standard` 分詞器](http://bit.ly/1E3Fd1b)將字符串分割成單獨的字詞,刪除大部分標點符號,但是現存的其他分詞器會有不同的行為特征。 > 例如,[`keyword` 分詞器](http://bit.ly/1ICd585)輸出和它接收到的相同的字符串,不做任何分詞處理。[`whitespace` 分詞器]只通過空格來分割文本。[`pattern` 分詞器]可以通過正則表達式來分割文本。 標記過濾器 > 分詞結果的 _標記流_ 會根據各自的情況,傳遞給特定的標記過濾器。 > 標記過濾器可能修改,添加或刪除標記。我們已經提過 [`lowercase`](http://bit.ly/1DIeXvZ) 和 [`stop`](http://bit.ly/1INX4tN) 標記過濾器,但是 Elasticsearch 中有更多的選擇。[`stemmer` 標記過濾器](http://bit.ly/1AUfpDN)將單詞轉化為他們的根形態(root form)。[`ascii_folding` 標記過濾器](http://bit.ly/1ylU7Q7)會刪除變音符號,比如從 `très` 轉為 `tres`。 [`ngram`](http://bit.ly/1CbkmYe) 和 [`edge_ngram`](http://bit.ly/1DIf6j5) 可以讓標記更適合特殊匹配情況或自動完成。 在【深入搜索】中,我們將舉例介紹如何使用這些分詞器和過濾器。但是首先,我們需要闡述一下如何創建一個自定義分析器 ### 創建自定義分析器 與索引設置一樣,我們預先配置好 `es_std` 分析器,我們可以再 `analysis` 字段下配置字符過濾器,分詞器和標記過濾器: ``` PUT /my_index { "settings": { "analysis": { "char_filter": { ... custom character filters ... }, "tokenizer": { ... custom tokenizers ... }, "filter": { ... custom token filters ... }, "analyzer": { ... custom analyzers ... } } } } ``` 作為例子,我們來配置一個這樣的分析器: 1. 用 `html_strip` 字符過濾器去除所有的 HTML 標簽 2. 將 `&` 替換成 `and`,使用一個自定義的 `mapping` 字符過濾器 ``` "char_filter": { "&_to_and": { "type": "mapping", "mappings": [ "&=> and "] } } ``` 3. 使用 `standard` 分詞器分割單詞 4. 使用 `lowercase` 標記過濾器將詞轉為小寫 5. 用 `stop` 標記過濾器去除一些自定義停用詞。 ``` "filter": { "my_stopwords": { "type": "stop", "stopwords": [ "the", "a" ] } } ``` 根據以上描述來將預定義好的分詞器和過濾器組合成我們的分析器: ``` "analyzer": { "my_analyzer": { "type": "custom", "char_filter": [ "html_strip", "&_to_and" ], "tokenizer": "standard", "filter": [ "lowercase", "my_stopwords" ] } } ``` 用下面的方式可以將以上請求合并成一條: ``` PUT /my_index { "settings": { "analysis": { "char_filter": { "&_to_and": { "type": "mapping", "mappings": [ "&=> and "] }}, "filter": { "my_stopwords": { "type": "stop", "stopwords": [ "the", "a" ] }}, "analyzer": { "my_analyzer": { "type": "custom", "char_filter": [ "html_strip", "&_to_and" ], "tokenizer": "standard", "filter": [ "lowercase", "my_stopwords" ] }} }}} ``` <!-- SENSE: 070_Index_Mgmt/20_Custom_analyzer.json --> 創建索引后,用 `analyze` API 來測試新的分析器: ``` GET /my_index/_analyze?analyzer=my_analyzer The quick & brown fox ``` <!-- SENSE: 070_Index_Mgmt/20_Custom_analyzer.json --> 下面的結果證明我們的分析器能正常工作了: ``` { "tokens" : [ { "token" : "quick", "position" : 2 }, { "token" : "and", "position" : 3 }, { "token" : "brown", "position" : 4 }, { "token" : "fox", "position" : 5 } ] } ``` 除非我們告訴 Elasticsearch 在哪里使用,否則分析器不會起作用。我們可以通過下面的映射將它應用在一個 `string` 類型的字段上: ``` PUT /my_index/_mapping/my_type { "properties": { "title": { "type": "string", "analyzer": "my_analyzer" } } } ``` <!-- SENSE: 070_Index_Mgmt/20_Custom_analyzer.json -->
                  <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>

                              哎呀哎呀视频在线观看