真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Elasticsearch-高級搜索(拼音|首字母|簡繁|二級搜索)-創(chuàng)新互聯(lián)

需求:

創(chuàng)新互聯(lián)專注于岱山企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站開發(fā)。岱山網(wǎng)站建設(shè)公司,為岱山等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
  1. 中文搜索、英文搜索、中英混搜
  2. 全拼搜索、首字母搜索、中文+全拼、中文+首字母混搜
  3. 簡繁搜索
  4. 二級搜索(對第一次搜索結(jié)果,再進(jìn)行搜索)

一、ES相關(guān)插件

IK分詞:

GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary.

拼音:

https://github.com/medcl/elasticsearch-analysis-pinyin

簡繁體:

ehttps://github.com/medcl/elasticsearch-analysis-stconvert


二、什么是 analysis

analysis分析是 Elasticsearch 在文檔發(fā)送之前對文檔正文執(zhí)行的過程,以添加到反向索引中(inverted index)。 在將文檔添加到索引之前,Elasticsearch 會為每個分析的字段執(zhí)行許多步驟:

  • Character filtering (字符過濾器): 使用字符過濾器轉(zhuǎn)換字符
  • Breaking text into tokens (把文字轉(zhuǎn)化為標(biāo)記): 將文本分成一組一個或多個標(biāo)記
  • Token filtering:使用標(biāo)記過濾器轉(zhuǎn)換每個標(biāo)記
  • Token indexing:把這些標(biāo)記存于索引中

詳細(xì)介紹:Elasticsearch: analyzer_Elastic 中國社區(qū)官方博客的博客-博客_elasticsearch analyzer如果大家之前看過我寫的文章“開始使用Elasticsearch (3)”,在文章的最后部分寫了有關(guān)于analyzer的有關(guān)介紹。在今天的文章中,我們來進(jìn)一步了解analyzer。 analyzer執(zhí)行將輸入字符流分解為token的過程,它一般發(fā)生在兩個場合:在indexing的時候,也即在建立索引的時候在searching的時候,也即在搜索時,分析需要搜索的詞語什么是analysis...https://blog.csdn.net/UbuntuTouch/article/details/100392478

三、索引模板
PUT /_template/test_template
{
  "index_patterns": [
    "test-*"
  ],
  "aliases": {
    "test_read": {}
  },
  "settings": {
    "index": {
      "max_result_window": "100000",
      "refresh_interval": "5s",
      "number_of_shards": "5",
      "translog": {
        "flush_threshold_size": "1024mb",
        "sync_interval": "30s",
        "durability": "async"
      },
      "number_of_replicas": "1"
    },
    "analysis": {
      "char_filter": {
        "tsconvert": {
          "type": "stconvert",
          "convert_type": "t2s"
        }
      },
      "analyzer": {
        "ik_t2s_pinyin_analyzer": {
          "type": "custom",
          "char_filter": [
            "tsconvert"
          ],
          "tokenizer": "ik_max_word",
          "filter": [
            "pinyin_filter",
            "lowercase"
          ]
        },
        "stand_t2s_pinyin_analyzer": {
          "type": "custom",
          "char_filter": [
            "tsconvert"
          ],
          "tokenizer": "standard",
          "filter": [
            "pinyin_filter",
            "lowercase"
          ]
        },
        "ik_t2s_analyzer": {
          "type": "custom",
          "char_filter": [
            "tsconvert"
          ],
          "tokenizer": "ik_max_word",
          "filter": [
            "lowercase"
          ]
        },
        "stand_t2s_analyzer": {
          "type": "custom",
          "char_filter": [
            "tsconvert"
          ],
          "tokenizer": "standard",
          "filter": [
            "lowercase"
          ]
        },
        "ik_pinyin_analyzer": {
          "type": "custom",
          "tokenizer": "ik_max_word",
          "filter": [
            "pinyin_filter",
            "lowercase"
          ]
        },
        "stand_pinyin_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "pinyin_filter",
            "lowercase"
          ]
        }
      },
      "filter": {
        "pinyin_first_letter_and_full_pinyin_filter": {
          "type": "pinyin",
          "keep_first_letter": true,
          "keep_separate_first_letter": false,
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_none_chinese": true,
          "none_chinese_pinyin_tokenize": false,
          "keep_none_chinese_in_joined_full_pinyin": true,
          "keep_original": false,
          "limit_first_letter_length": 1000,
          "lowercase": true,
          "trim_whitespace": true,
          "remove_duplicated_term": true
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "index_phrases": true,
        "analyzer": "ik_max_word",
        "index": true,
        "type": "text",
        "fields": {
          "keyword": {
            "ignore_above": 256,
            "type": "keyword"
          },
          "stand": {
            "analyzer": "standard",
            "type": "text"
          },
          "STPA": {
            "type": "text",
            "analyzer": "stand_t2s_pinyin_analyzer"
          },
          "ITPA": {
            "type": "text",
            "analyzer": "ik_t2s_pinyin_analyzer"
          }
        }
      },
      "desc": {
        "index_phrases": true,
        "analyzer": "ik_max_word",
        "index": true,
        "type": "text",
        "fields": {
          "keyword": {
            "ignore_above": 256,
            "type": "keyword"
          },
          "stand": {
            "analyzer": "standard",
            "type": "text"
          },
          "STPA": {
            "type": "text",
            "analyzer": "stand_t2s_pinyin_analyzer"
          },
          "ITPA": {
            "type": "text",
            "analyzer": "ik_t2s_pinyin_analyzer"
          }
        }
      },
      "abstr": {
        "index_phrases": true,
        "analyzer": "ik_max_word",
        "index": true,
        "type": "text",
        "fields": {
          "keyword": {
            "ignore_above": 256,
            "type": "keyword"
          },
          "stand": {
            "analyzer": "standard",
            "type": "text"
          },
          "STPA": {
            "type": "text",
            "analyzer": "stand_t2s_pinyin_analyzer"
          },
          "ITPA": {
            "type": "text",
            "analyzer": "ik_t2s_pinyin_analyzer"
          }
        }
      }
    }
  }
}

四、DSL語句
GET /test_read/_search
{
  "from": 0,
  "size": 10,
  "terminate_after": 100000,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "bj天安門 OR 測試",
            "fields": [
              "name.ITPA"
            ],
            "type": "phrase",
            "default_operator": "and"
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "post_filter": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "天安門"
          }
        }
      ]
    }
  },
  "highlight": {
    "fragment_size": 1000,
    "pre_tags": [
      ""
    ],
    "post_tags": [
      ""
    ],
    "fields": {
      "name.stand": {},
      "desc.stand": {},
      "abstr.stand": {},
      "name.IPA": {},
      "desc.IPA": {},
      "abstr.IPA": {},
      "name.ITPA": {},
      "desc.ITPA": {},
      "abstr.ITPA": {}
    }
  }
}

post_filter:后過濾器 | Elasticsearch: 權(quán)威指南 | Elastic

PS:post_filter實現(xiàn)二次搜索功能,post_filter無法使用es高亮功能,需要自己通過代碼進(jìn)行手動標(biāo)記高亮;根據(jù)上面的DSL語句,可寫出對應(yīng)的代碼啦~

拼音插件配置:

  • keep_first_letter:這個參數(shù)會將詞的第一個字母全部拼起來.例如:劉德華->ldh.默認(rèn)為:true
  • keep_separate_first_letter:這個會將第一個字母一個個分開.例如:劉德華->l,d,h.默認(rèn)為:flase.如果開啟,可能導(dǎo)致查詢結(jié)果太過于模糊,準(zhǔn)確率太低.
  • limit_first_letter_length:設(shè)置大keep_first_letter結(jié)果的長度,默認(rèn)為:16
  • keep_full_pinyin:如果打開,它將保存詞的全拼,并按字分開保存.例如:劉德華>[liu,de,hua],默認(rèn)為:true
  • keep_joined_full_pinyin:如果打開將保存詞的全拼.例如:劉德華>[liudehua],默認(rèn)為:false
  • keep_none_chinese:將非中文字母或數(shù)字保留在結(jié)果中.默認(rèn)為:true
  • keep_none_chinese_together:保證非中文在一起.默認(rèn)為: true, 例如: DJ音樂家 ->DJ,yin,yue,jia, 如果設(shè)置為:false, 例如: DJ音樂家 ->D,J,yin,yue,jia, 注意: keep_none_chinese應(yīng)該先開啟.
  • keep_none_chinese_in_first_letter:將非中文字母保留在首字母中.例如: 劉德華AT2016->ldhat2016, 默認(rèn)為:true
  • keep_none_chinese_in_joined_full_pinyin:將非中文字母保留為完整拼音. 例如: 劉德華2016->liudehua2016, 默認(rèn)為: false
  • none_chinese_pinyin_tokenize:如果他們是拼音,切分非中文成單獨的拼音項. 默認(rèn)為:true,例如: liudehuaalibaba13zhuanghan ->liu,de,hua,a,li,ba,ba,13,zhuang,han, 注意: keep_none_chinese和keep_none_chinese_together需要先開啟.
  • keep_original:是否保持原詞.默認(rèn)為:false
  • lowercase:小寫非中文字母.默認(rèn)為:true
  • trim_whitespace:去掉空格.默認(rèn)為:true
  • remove_duplicated_term:保存索引時刪除重復(fù)的詞語.例如: de的>de, 默認(rèn)為: false, 注意:開啟可能會影響位置相關(guān)的查詢.
  • ignore_pinyin_offset:在6.0之后,嚴(yán)格限制偏移量,不允許使用重疊的標(biāo)記.使用此參數(shù)時,忽略偏移量將允許使用重疊的標(biāo)記.請注意,所有與位置相關(guān)的查詢或突出顯示都將變?yōu)殄e誤,您應(yīng)使用多個字段并為不同的字段指定不同的設(shè)置查詢目的.如果需要偏移量,請將其設(shè)置為false。默認(rèn)值:true

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前名稱:Elasticsearch-高級搜索(拼音|首字母|簡繁|二級搜索)-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/jeegh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部