Elasticsearch分词及其自定义
在Elasticsearch中,分词是将文本数据转化为一系列单独的词汇的过程,以便于之后的索引和搜索。Elasticsearch内置了许多分词器,同时也支持自定义分词器。
以下是一个自定义分词器的例子,它使用了内置的standard
分词器,并添加了stop
过滤器来移除停用词:
PUT /my_index
{
"settings": {
"analysis": {
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": ["-=>"]
}
},
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": ["the", "a"]
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter": ["html_strip", "my_char_filter"],
"tokenizer": "standard",
"filter": ["lowercase", "my_stopwords"]
}
}
}
}
}
在这个例子中,我们定义了一个自定义的分词器my_analyzer
,它使用了standard
分词器来进行分词,并且添加了一个自定义的字符过滤器my_char_filter
来替换文本中的连字符,同时使用了一个停用词过滤器my_stopwords
来移除"the"和"a"这样的常用词。
在创建索引时,可以指定这个自定义分词器:
PUT /my_index/_mapping/my_type
{
"properties": {
"content": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
在这个例子中,我们定义了一个my_type
类型的文档,其中content
字段使用了my_analyzer
分词器。这样,在对该字段进行搜索时,Elasticsearch会使用相同的分词器设置进行分词和搜索。
评论已关闭