es6.2.4学习----分词器

Elasticsearch 为很多世界流行语言提供良好的、简单的、开箱即用的语言分析器集合,这些分析器承担以下四种角色:
文本拆分为单词:
The quick brown foxes → [ The, quick, brown, foxes]
大写转小写:
The → the
移除常用的 停用词
[ The, quick, brown, foxes] → [ quick, brown, foxes]
将变型词(例如复数词,过去式)转化为词根:
foxes → fox

字段映射中直接指定分词器
title 字段将会用 english(英语)分析器替换默认的 standard(标准)分析器

PUT /my_index
{
    "mappings": {
    "blog": {
      "properties": {
        "title": {
          "type":     "string",
          "analyzer": "english" 
        }
      }
    }
  }
}

虽然通过使用 english (英语)分析器,使得匹配规则更加宽松,我们也因此提高了召回率,但却降低了精准匹配文档的能力。
为了获得两方面的优势,使用multifields(多字段)对 title 字段建立两次索引

PUT /my_index
{
  "mappings": {
    "blog": {
      "properties": {
        "title": { 
          "type": "string",
          "fields": {
            "english": { 
              "type":     "string",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}

替换为该字段映射后,我们可以索引一些测试文档来展示怎么在搜索时使用两个字段:
使用most_fields query type(多字段搜索语法来)让我们可以用多个字段来匹配同一段文本。

PUT /my_index/blog/1
{ "title": "I'm happy for this fox" }

PUT /my_index/blog/2
{ "title": "I'm not happy about my fox problem" }

GET /_search
{
  "query": {
    "multi_match": {
      "type":     "most_fields", 
      "query":    "not happy foxes",
      "fields": [ "title", "title.english" ]
    }
  }
}

当原始english分析器不满足我们的需求时,我们可以基于 english (英语)分析器创建一个自定义分析器,然后添加一些配置。

你可能感兴趣的:(es6.2.4学习----分词器)