ES中的分析和分析器

在ES存储的文档,进行存储时,会对文档的内容进行分析和分词

分析的过程:

  • 首先,将一块文本分成适合于倒排索引的独立的 词条 ,
  • 之后,将这些词条统一化为标准格式以提高它们的“可搜索性”,或者 recall

分析器的三个功能

1.字符过滤器

  首先,字符串按顺序通过每个 字符过滤器 。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 `and`。

2.分词器

  其次,字符串被 分词器 分为单个的词条。一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条。

3.Token过滤去器

  最后,词条按顺序通过每个 token 过滤器 。这个过程可能会改变词条(例如,小写化 Quick ),删除词条(例如, 像 a`, `and`, `the 等无用词),或者增加词条(例如,像 jump 和 leap 这种同义词)

ES中有内置的分析器,也可以使用定制的分析器

内置的分析器

  标准分析器,简单分析器,空格分析器,语言分析器

测试分析器的分词过程

  

GET /_analyze
{
  "analyzer": "standard",
  "text": "Text to analyze"
}

运行结果为:

{
  "tokens": [
    {
      "token": "text",
      "start_offset": 0,
      "end_offset": 4,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "to",
      "start_offset": 5,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "analyze",
      "start_offset": 8,
      "end_offset": 15,
      "type": "<ALPHANUM>",
      "position": 2
    }
  ]
}

token 为你实际存储的关键字

positition 指明词条在原始文本中的位置

start_offset /end_offset  字符在原始字符串中的位置 

原文地址:https://www.cnblogs.com/learndata/p/10510805.html