- 分词器
分词是将输入的文本分解成独立单元的过程,这些单元通常称为tokens或terms。在Elasticsearch中,分词由分词器(tokenizer)、过滤器(filter)和字符过滤器(char filter)组成。
分词器负责将输入文本分解成tokens,Elasticsearch内置了多种分词器,如标准分词器(standard tokenizer)、较简单的空格分词器(whitespace tokenizer)等。除了内置分词器,Elasticsearch还支持用户自定义分词器。
- 过滤器
过滤器负责对tokens进行进一步处理,如删除停用词、将tokens转换为小写字母、提取数字等。Elasticsearch也内置了多种过滤器,如停用词过滤器(stopwords filter)、小写字母过滤器(lowercase filter)等。同样地,用户也可以自定义过滤器。
- 字符过滤器
字符过滤器负责在分词器执行之前对输入文本进行预处理,如替换某些字符、删除HTML标签等。Elasticsearch内置了多种字符过滤器,如HTML字符过滤器(html strip char filter)等。同样地,用户也可以自定义字符过滤器。
- 分析器
分析器是将分词器、过滤器和字符过滤器组合起来形成的文本处理管道。Elasticsearch支持多种预定义分析器,如标准分析器(standard analyzer)、简单分析器(simple analyzer)等。用户也可以根据具体需求自定义分析器,例如创建一个针对中文文本的自定义分析器。
在具体使用过程中,我们可以通过以下API来指定不同的分析器:
PUT /my_index { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "whitespace", "filter": [ "lowercase", "stop" ] } } } }, "mappings": { "properties": { "content": { "type": "text", "analyzer": "my_analyzer" } } } }
以上就是Elasticsearch分词的简要介绍。当然,在实际应用中我们可能会遇到更加复杂的场景和需求,需要结合具体情况进行灵活调整和优化。