ES自定义分词器

ES自定义分词器

es的分词器往往包括3个低级构建块包:

  • character filters - 字符过滤器,可以添加、删除或更改字符来转换流,一个分析器可有多个字符过滤器;
  • token filters - token过滤器,接受token流,并可以添加、删除或修改token,不允许更改每个token的位置或字符偏移量,一个分析器可有多个token过滤器,并按顺序应用。
  • tokenizer - 标记器,接受字符流,将其分解成单独的标记,并输出标记流,一个分析器只能有一个标记器

Elasticsearch提供的内置analyzers

Standard Analyzer
标准分析仪按照Unicode文本分段算法的定义,将文本分割成单词边界的分词。它删除了大多数标点符号,小写显示分词,并支持删除stop words。

Simple Analyzer
当遇到不是字母的字符时,简单的分析器会将文本分成条目。小写显示分词。

Whitespace Analyzer
空格分析器遇到任何空格字符时都会将文本分为多个项目。不会把分词转换为小写字母。

Stop Analyzer
停止分析仪和Simple Analyzer类似,但也支持stop words的删除。

Keyword Analyzer
一个“noop”分析器,它可以接受任何给定的文本,并输出完全相同的文本作为一个单词。

Pattern Analyzer
使用正则表达式拆分分词,支持lower-casing和stop words。

Language Analyzers
Elasticsearch提供许多语言特定的分析器,如英语或法语。

Fingerprint Analyzer
一个专门的分析仪,它可以创建一个可用于重复检测的指纹。

https://www.jianshu.com/p/13112fe5eaad

实战

对中文文本以英文逗号作为分隔符分词:

"这里有,最棒的ACG氛围,最有创意的Up主"

将分析器设置到索引上

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "type": "simple"
        }
      }
    }
  }
}

获取分词结果

POST my_index/_analyze
{
  "analyzer": "my_analyzer",
  "text": "这里有,最棒的ACG氛围,最有创意的Up主"
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stop-analyzer.html

注意

es 节点层面的默认分词设置已经废弃,不支持了。就是说在elasticsearch.yml配置诸如:

index:
  analysis:                  
    analyzer:
      simple_analyzer:
        type: simple

无效,会导致es启动失败:

********************************************************************************
*****
Found index level settings on node level configuration.

Since elasticsearch 5.x index level settings can NOT be set on the nodes
configuration like the elasticsearch.yaml, in system properties or command line

arguments.In order to upgrade all indices the settings must be updated via the
/${index}/_settings API. Unless all settings are dynamic all indices must be clo
sed
in order to apply the upgradeIndices created in the future should use index temp
lates
to set default values.

推荐在索引层面动态设置。
https://blog.csdn.net/yu280265067/article/details/71107658

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值