当前位置: 首页 > news >正文

ES分词技术

Elasticsearch(ES)的搜索功能依赖于分词技术,分词是将文本拆分为单个词或词项的过程,直接影响搜索的准确性和效率。以下是ES中分词技术的详细介绍:

1. 分词器(Analyzer)

分词器是分词的核心组件,通常由以下三部分组成:

  • 字符过滤器(Character Filters):预处理文本,如去除HTML标签。
  • 分词器(Tokenizer):将文本拆分为词项。
  • 词项过滤器(Token Filters):对词项进行处理,如小写转换、去除停用词。

2. 内置分词器

ES提供了多种内置分词器,常见的有:

  • Standard Analyzer:默认分词器,按空格和标点分词,支持多语言。
  • Simple Analyzer:按非字母字符分词,并将词项转为小写。
  • Whitespace Analyzer:仅按空格分词,不转换大小写。
  • Keyword Analyzer:将整个文本作为一个词项,适用于精确匹配。
  • Pattern Analyzer:使用正则表达式分词。
  • Language Analyzers:针对特定语言优化,如英语、中文。

3. 自定义分词器

用户可以根据需求自定义分词器,配置如下:

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "char_filter": ["html_strip"],
          "filter": ["lowercase", "my_custom_filter"]
        }
      },
      "filter": {
        "my_custom_filter": {
          "type": "stop",
          "stopwords": ["and", "the"]
        }
      }
    }
  }
}

4. 分词过程

分词过程包括以下步骤:

  1. 字符过滤:预处理文本。
  2. 分词:将文本拆分为词项。
  3. 词项过滤:进一步处理词项。

5. 中文分词

中文分词较为复杂,常用插件有:

  • IK Analyzer:支持细粒度和智能分词模式。
  • Jieba Analyzer:基于结巴分词,支持自定义词典。

6. 使用示例

6.1 创建索引并指定分词器
PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "tokenizer": "ik_max_word"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}
6.2 测试分词器
POST /my_index/_analyze
{
  "analyzer": "my_analyzer",
  "text": "这是一个分词测试"
}

7. 总结

ES的分词技术通过字符过滤、分词和词项过滤等步骤,结合内置和自定义分词器,支持多种语言和复杂需求。中文分词则依赖插件如IK Analyzer和Jieba Analyzer。合理配置分词器能显著提升搜索效果。

相关文章:

  • SpringBoot:使用spring-boot-test对web应用做单元测试时如何测试Filter?
  • Redis 集群相关知识介绍
  • 小初高各学科教材,PDF电子版下载
  • 切换git仓库远程地址
  • C#windows窗体人脸识别
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_atomic_cmp_set 函数
  • Django5的新特征
  • Manga Image Translator 开源 AI 漫画翻译工具的深度剖析
  • 【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​
  • ubuntu服务器 如何配置安全加固措施
  • Visual Studio 使用 “Ctrl + /”键设置注释和取消注释
  • 肝了半年,我整理出了这篇云计算学习路线(新手必备,从入门到精通)
  • 安卓手游内存call综合工具/内部call/安卓注入call/数据分析(类人猿学院)
  • C语言-章节 4:函数的定义与声明 ——「神秘法术的卷轴」
  • stm32mp集成swupdateOTA升级
  • docker nginx 配置文件详解
  • vuedraggable固定某一item的记录
  • CentOS安装Docker,Ubuntu安装Docker,Docker解决方案
  • 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控
  • LeapMotion第2代 Unity示范代码(桌面开发)
  • 中演协:五一假期全国营业性演出票房收入同比增长3.6%
  • 上海虹桥机场至北京首都机场快线试运行跨航司自愿签转服务
  • 美CIA发布视频“招募中国官员窃取机密”,外交部:赤裸裸的政治挑衅
  • 这个五一假期,外贸拓内销好货和识货人在上海“双向奔赴”
  • 伊朗港口爆炸事故遇难人数最终确定为57人
  • 言短意长|今年五一假期的一个新变化