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

                ## 索引原理 ### 倒排索引 `倒排索引(Inverted Index)`也叫反向索引,有反向索引必有正向索引。通俗地來講,`正向索引是通過key找value,反向索引則是通過value找key。ES底層在檢索時底層使用的就是倒排索引。` ### 索引模型 現有索引和映射如下: ```json { "products" : { "mappings" : { "properties" : { "description" : { "type" : "text" }, "price" : { "type" : "float" }, "title" : { "type" : "keyword" } } } } } ``` 先錄入如下數據,有三個字段title、price、description等 | _id | title | price | description | | ---- | ------------ | ------ | -------------------- | | 1 | 藍月亮洗衣液 | `19.9` | 藍月亮洗衣液`很`高效 | | 2 | iphone13 | `19.9` | `很`不錯的手機 | | 3 | 小浣熊干脆面 | 1.5 | 小浣熊`很`好吃 | 在ES中除了text類型分詞,其他類型不分詞,因此根據不同字段創建索引如下: - **title字段:** | term | _id(文檔id) | | ------------ | ----------- | | 藍月亮洗衣液 | 1 | | iphone13 | 2 | | 小浣熊干脆面 | 3 | - **price字段** | term | _id(文檔id) | | ---- | ----------- | | 19.9 | [1,2] | | 1.5 | 3 | - **description字段** | term | _id | term | _id | term | _id | | ---- | ------------------- | ---- | ---- | ---- | ---- | | 藍 | 1 | 不 | 2 | 小 | 3 | | 月 | 1 | 錯 | 2 | 浣 | 3 | | 亮 | 1 | 的 | 2 | 熊 | 3 | | 洗 | 1 | 手 | 2 | 好 | 3 | | 衣 | 1 | 機 | 2 | 吃 | 3 | | 液 | 1 | | | | | | 很 | [1:1:9,2:1:6,3:1:6] | | | | | | 高 | 1 | | | | | | 效 | 1 | | | | | **`注意: Elasticsearch分別為每個字段都建立了一個倒排索引。因此查詢時查詢字段的term,就能知道文檔ID,就能快速找到文檔。`** ## 分詞器 ### Analysis 和 Analyzer `Analysis`: 文本分析是把全文本轉換一系列單詞(term/token)的過程,也叫分詞(Analyzer)。**Analysis是通過Analyzer來實現的**。`分詞就是將文檔通過Analyzer分成一個一個的Term(關鍵詞查詢),每一個Term都指向包含這個Term的文檔`。 ### Analyzer 組成 - ? 注意: 在ES中默認使用標準分詞器: StandardAnalyzer 特點: 中文單字分詞 單詞分詞 我是中國人 this is good man----> analyzer----> 我 是 中 國 人 this is good man > 分析器(analyzer)都由三種構件組成的:`character filters` , `tokenizers` , `token filters`。 - `character filter` 字符過濾器 - 在一段文本進行分詞之前,先進行預處理,比如說最常見的就是,過濾html標簽(<span>hello<span> --> hello),& --> and(I&you --> I and you) - `tokenizers` 分詞器 - 英文分詞可以根據空格將單詞分開,中文分詞比較復雜,可以采用機器學習算法來分詞。 - `Token filters` Token過濾器 - **將切分的單詞進行加工**。大小寫轉換(例將“Quick”轉為小寫),去掉停用詞(例如停用詞像“a”、“and”、“the”等等),加入同義詞(例如同義詞像“jump”和“leap”)。 `注意:` - 三者順序: Character Filters--->Tokenizer--->Token Filter - 三者個數:Character Filters(0個或多個) + Tokenizer + Token Filters(0個或多個) ### 內置分詞器 - Standard Analyzer - 默認分詞器,英文按單詞詞切分,并小寫處理 - Simple Analyzer - 按照單詞切分(符號被過濾), 小寫處理 - Stop Analyzer - 小寫處理,停用詞過濾(the,a,is) - Whitespace Analyzer - 按照空格切分,不轉小寫 - Keyword Analyzer - 不分詞,直接將輸入當作輸出 ### 內置分詞器測試 - 標準分詞器 - 特點: 按照單詞分詞 英文統一轉為小寫 過濾標點符號 中文單字分詞 ```http POST /_analyze { "analyzer": "standard", "text": "this is a , good Man 中華人民共和國" } ``` - Simple 分詞器 - 特點: 英文按照單詞分詞 英文統一轉為小寫 去掉符號 中文按照空格進行分詞 ```http POST /_analyze { "analyzer": "simple", "text": "this is a , good Man 中華人民共和國" } ``` - Whitespace 分詞器 - 特點: 中文 英文 按照空格分詞 英文不會轉為小寫 不去掉標點符號 ```http POST /_analyze { "analyzer": "whitespace", "text": "this is a , good Man" } ``` ### 創建索引設置分詞 ```json PUT /索引名 { "settings": {}, "mappings": { "properties": { "title":{ "type": "text", "analyzer": "standard" //顯示指定分詞器 } } } } ```
                  <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>

                              哎呀哎呀视频在线观看