分析过程

当数据被发送到elasticsearch后并加入倒排序索引之前,elasticsearch会对文档进行处理:   

  • 字符过滤:使用字符过滤器转变字符。
  • 文本切分为分词:将文本(档)分为单个或多个分词。
  • 分词过滤:使用分词过滤器转变每个分词。
  • 分词索引:最终将分词存储在Lucene倒排索引中。

整体流程:

Elasticsearch的分析过程,内置字符过滤器、分析器、分词器、分词过滤器(真是变态多啊!美滋滋)

目的是达到人性化的分词

内置字符过滤器

Elasticsearch的分析过程,内置字符过滤器、分析器、分词器、分词过滤器(真是变态多啊!美滋滋)

HTML字符过滤器、映射字符过滤器、模式替换过滤器

HTML字符过滤器 

POST _analyze
{
  "tokenizer":      "keyword", 
  "char_filter":  [ "html_strip" ],
  "text": "<p>I&apos;m so <b>happy</b>!</p>"
}

 

 结果

{
  "tokens" : [
    {
      "token" : """

I'm so happy!

""",
      "start_offset" : 0,
      "end_offset" : 32,
      "type" : "word",
      "position" : 0
    }
  ]
}

 

自定义HTML过滤器

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": ["my_char_filter"]
        }
      },
      "char_filter": {
        "my_char_filter": {
          "type": "html_strip",
          "escaped_tags": ["b"]
        }
      }
    }
  }
}

 

映射字符过滤

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer":{
          "tokenizer":"keyword",
          "char_filter":["my_char_filter"]
        }
      },
      "char_filter":{
          "my_char_filter":{
            "type":"mapping",
            "mappings":["苍井空 => 666","武藤兰 => 888"]
          }
        }
    }
  }
}

GET my_index/_analyze
{
  "analyzer": "my_analyzer",
  "text":"苍井空热爱武藤兰,可惜苍井空后来结婚了"
}

 

结果

 1 {
 2   "tokens" : [
 3     {
 4       "token" : "666热爱888,可惜666后来结婚了",
 5       "start_offset" : 0,
 6       "end_offset" : 19,
 7       "type" : "word",
 8       "position" : 0
 9     }
10   ]
11 }
1111111

相关文章:

  • 2021-11-14
  • 2021-12-26
  • 2021-08-25
  • 2021-08-02
  • 2021-09-20
  • 2022-02-19
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案