欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Elasticsearch 倒排索引与分词器调优实战

发表于:|最后更新:|分类:大数据与流计算|阅读:1421 次

Elasticsearch 的检索能力源于 Lucene 的倒排索引:将文档内容切分为词项(Term),并记录每个词项出现的文档列表(Postings List)。

一、分词器组成

分词器(Analyzer)由三部分组成:

  • Character Filter:字符预处理,如去除 HTML 标签
  • Tokenizer:切分为词项,如 standard、ik_max_word
  • Token Filter:词项归一化,如小写转换、同义词、停用词

二、中文分词配置示例

json
PUT /articles
{
  "settings": {
    "analysis": {
      "analyzer": {
        "zh_analyzer": {
          "type": "custom",
          "tokenizer": "ik_max_word",
          "filter": ["lowercase"]
        }
      }
    }
  }
}

合理选择 ik_max_word(细粒度)与 ik_smart(粗粒度)可平衡召回率与查询性能。对只读历史索引执行 force_merge 可减少段数量并提升检索速度。