在 【分析器介绍】 中,我们提到 分析器 是三个顺序执行的组件的结合(字符过滤器,分词器,标记过滤器)。
字符过滤器
分词器
标记过滤器
在【深入搜索】中,我们将举例介绍如何使用这些分词器和过滤器。但是首先,我们需要阐述一下如何创建一个自定义分析器
创建自定义分析器
与索引设置一样,我们预先配置好 分析器,我们可以再 analysis
字段下配置字符过滤器,分词器和标记过滤器:
作为例子,我们来配置一个这样的分析器:
用
html_strip
字符过滤器去除所有的 HTML 标签
"char_filter": {
"&_to_and": {
"type": "mapping",
"mappings": [ "&=> and "]
}
}
使用
lowercase
标记过滤器将词转为小写用
stop
标记过滤器去除一些自定义停用词。
根据以上描述来将预定义好的分词器和过滤器组合成我们的分析器:
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [ "lowercase", "my_stopwords" ]
}
用下面的方式可以将以上请求合并成一条:
创建索引后,用 analyze
API 来测试新的分析器:
GET /my_index/_analyze?analyzer=my_analyzer
The quick & brown fox
下面的结果证明我们的分析器能正常工作了:
PUT /my_index/_mapping/my_type
{
"properties": {
"title": {
"type": "string",
"analyzer": "my_analyzer"
}
}