Elasticsearch索引分析

首先把一个文本块分析成一个个单独的词(term),为了后面的倒排索引做准备。然后标准化这些词为标准形式,提高它们的“可搜索性”,这些工作是分析器(analyzers)完成的。一个分析器(analyzers)是一个组合,实现以下三个功能:

  1. 字符过滤器:字符串经过字符过滤器(character filter)处理,他们的工作是在标记化之前处理字符串。字符过滤器能够去除HTML标记,或者转换&and
  2. 分词器:分词器(tokenizer)被标记化成独立的词,一个简单的分词器(tokenizer)可以根据空格或逗号将单词分开。
  3. 词元过滤器:每个词都通过所有标记过滤(token filters)处理,他可以修改词(例如将Quick转为小写),去掉词(例如像aandthe等),或者增加词(例如同义词像jumpleap)。

Elasticsearch提供了很多内置的字符过滤器,分词器和标记过滤器。这些可以组合来创建自定义过滤器以应对不同的需求。

分析器

POST _analyze
{
  "analyzer": "standard",
  "text": "this is a test"
}

使用standard分析器,该结果返回this is a test,在这个分词器下,将会分析成thisisatest四个词。
使用自定义分词器

POST _analyze
{
  "tokenizer": "keyword",
  "filter": ["lowercase"], 
  "char_filter": ["html_strip"],
  "text": "this is a <b>Test</b>"
}

结果返回:

{
  "tokens": [
    {
      "token": "this",
      "start_offset": 0,
      "end_offset": 4,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "is",
      "start_offset": 5,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "a",
      "start_offset": 8,
      "end_offset": 9,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "test",
      "start_offset": 10,
      "end_offset": 14,
      "type": "<ALPHANUM>",
      "position": 3
    }
  ]
}

使用keyword分词器、lowercase词元过滤器、html_strip字符过滤器,这三个部分组成一个分词器。
上面的结果返回:

{
  "tokens": [
    {
      "token": "this is a test",
      "start_offset": 0,
      "end_offset": 21,
      "type": "word",
      "position": 0
    }
  ]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值