Elasticsearch区分Analyzer之Tokenizer

Analyzer包含两个核心组件,Tokenizer以及TokenFilter。两者的区别在于,前者在字符级别处理流,而后者则在词语级别处理流。TokenizerAnalyzer的第一步,其构造函数接收一个Reader作为参数,而TokenFilter则是一个类似的拦截器,其参数可以是TokenStreamTokenizer。

Tokenizer的类结构图:


各类的介绍:

1.Tokenizer
输入为Reader的TokenStream,其子类必须实现incrementToken()函数,并且在设置属性(attributes) 必须调用AttributeSource中的clearAttributes()方法。

2.CharTokenizer
一个简单的,基于字符(character)的tokenizers。

protected abstract boolean isTokenChar(int c);//判断是否应该加入token

 protected int normalize(int c) {
    return c;
  }//对每一个即将加入到token的字符进行处理,默认不进行任何操作,直接返回(
其子类可能使用此方法,比如lowercase tokens

3.LetterTokenizer
一个将文本在非字母的地方进行拆分的tokenizer,对于亚洲语系来说并不适合,因为其
大部分单词并不是以空格划分的。

  protected boolean isTokenChar(int c) {
    return Character.isLetter(c);//收集符合要求的字符
  }

4.LowerCaseTokenizer
一个将文本在非字母的地方拆分并转换成小写的Tokenizer,其作用类似于LetterTokenizer与LowerCaseFilter的组合。

  protected int normalize(int c) {
    return Character.toLowerCase(c);//字母转换成小写
  }

5.WhitespaceTokenizer
一个在空白处对文本进行拆分的tokenizer。

  protected boolean isTokenChar(int c) {
    return !Character.isWhitespace(c);//判断字符是否为空白
  }

6.KeywordTokenizer
将整个输入作为一个分词的tokenizer。

### Elasticsearch Mapping Analyzer 配置与使用 在 Elasticsearch 中,`analyzer` 是用于处理文本数据的关键属性之一。它定义了如何将字符串拆分为 tokens 并对其进行标准化以便于索引和查询操作[^3]。 #### 定义 `analyzer` 可以通过两种方式来指定分析器: 1. **单独定义 `index_analyzer` 和 `search_analyzer`:** 这种方法允许分别定义索引时使用的分析器以及搜索时使用的分析器。这种方式提供了更高的灵活性,可以根据不同的场景调整分词逻辑。 2. **统一使用 `analyzer` 属性:** 如果希望在索引和搜索过程中都使用相同的分析器,则可以简单地通过 `analyzer` 属性一次性设置两者的行为。 以下是具体的配置示例: ```json PUT my_index { "settings": { "analysis": { "analyzer": { "my_custom_analyzer": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "stop"] } } } }, "mappings": { "properties": { "description": { "type": "text", "analyzer": "my_custom_analyzer" } } } } ``` 在此示例中,创建了一个名为 `my_custom_analyzer` 的自定义分析器,并将其应用于字段 `description` 上。此分析器基于标准分词器并应用了小写转换和停用词过滤功能。 #### 设置密码的安全性考虑 当在生产环境中部署 Elasticsearch 实例时,为了保护集群免受未经授权访问的影响,应当启用安全特性如 X-Pack 提供的身份验证机制。这通常涉及为内置用户账户设定强密码[^2]: ```bash /usr/local/soft/es7.14/elasticsearch-7.14/bin/elasticsearch-setup-passwords interactive ``` 上述命令会引导管理员交互式地完成密码初始化过程,从而增强系统的安全性。 尽管 Java 环境对于运行 Elasticsearch 至关重要,但由于其安装细节超出了当前讨论范围,在此不做赘述[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值