zoukankan      html  css  js  c++  java
  • 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  字符在原始字符串中的位置 

  • 相关阅读:
    Linux系统操作问题汇总
    记录一些mysql数据库常用操作命令和问题汇总
    python学习之路-练习小程序02(模拟用户登录)
    python学习之路02(基础篇2)
    python学习之路-练习小程序01(猜年龄)
    python学习之路01(基础篇1)
    hashmap详解(基于jdk1.8)
    maven创建项目太慢怎么办
    CAS原理
    JUC原子类3-AtomicLongArray原子类
  • 原文地址:https://www.cnblogs.com/learndata/p/10510805.html
Copyright © 2011-2022 走看看