ElasticSearch 7.3 实战:倒排索引揭秘及初识分词器(Analyzer)

在Elasticsearch 7.3中,倒排索引和分词器(Analyzer)是实现全文检索的核心技术。

倒排索引(Inverted Index)

倒排索引是Elasticsearch用来快速查找文档的一种数据结构。在传统的数据库中,正向索引是从文档ID查找文档内容;而在全文搜索引擎如Elasticsearch中,倒排索引则是将文档中的词汇映射回包含它们的文档列表。

具体来说,Elasticsearch为每个索引中的每个字段生成一个倒排索引。对于文本字段,这个过程分为两步:

  1. 分词:将文本字段分割成单独的词汇(术语)。
  2. 建立映射:为每个词汇创建一个列表,该列表包含了所有包含该词汇的文档ID和相关的位置信息(在文档中出现的位置)。

分词器(Analyzer)

分词器是Elasticsearch处理文本字段的核心组件,负责将文本转换为可以被索引和搜索的词汇单元。分词器通常包括以下几个步骤:

  • 字符过滤器(Character Filters):预处理文本,如去除HTML标记、转义特殊字符等。
  • 分词器(Tokenizer):将文本切分成一系列词汇或标记(tokens)。
  • 词汇过滤器(Token Filters):进一步处理分词后的标记,如转换大小写、去停用词(如“的”、“得”、“和”等常见但无实际含义的词语)、同义词扩展等。

在Elasticsearch中,可以为每个字段指定不同的分析器,以适应不同语言和应用场景的需求。例如,对于英文文本可能使用标准分析器(Standard Analyzer),而对于中文文本则可能使用IK分词器或其他针对中文优化的分析器。

示例配置

下面是一个简单的映射配置示例,其中指定了一个字段使用标准分析器:

PUT my_index
{
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "standard"
      }
    }
  }
}

在实际使用中,你还可以自定义分析器,比如创建一个针对英文的自定义分析器,包含特定的字符过滤器和词汇过滤器:

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "char_filter": ["html_strip"],
          "tokenizer": "standard",
          "filter": ["lowercase", "asciifolding"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_custom_analyzer"
      }
    }
  }
}

在这个自定义分析器中,首先移除了HTML标签,然后使用标准分词器进行分词,最后将词汇转换为小写并折叠非ASCII字符。这样,无论搜索哪种形式的词汇,都可以找到对应的文档。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值