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  字符在原始字符串中的位置 

  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/learndata/p/10510805.html
Copyright © 2011-2022 走看看