停用词也叫停止词,是指文本在被分词之后的词语中包含的没有搜索意义的词。什么叫做无搜索意义呢。假设文本为"这里的世界丰富多彩",那么分词结果中的"这里"和"的"对于搜索其实是没有意义的。因为这类词语出现的频率实在是太高了,在构建索引的时候,常常忽略这样的词,可以提高搜索效率。
中文停用词可以在https://www.ranks.nl/stopwords/chinese-stopwords中找到
英文停用词可以在https://www.ranks.nl/stopwords中找到
以下分别介绍如何在es默认的分析器中使用停用词,以及ik分词中使用停用词
es 自带分析器设置停用词
PUT hotel
{
"settings": {
"analysis": {
"filter": {#定义分词过滤器
"my_stop":
{
"type":"stop", #指定分词过滤器类型为停用词
"stopwords":[ #指定停用词集合
"我",
"的"]
}
},
"analyzer": {
"my_analyzer":{#自定义分析器
"tokenizer":"standard",#分析器使用的分词器类型
"filter":["my_stop"]#指定分词过滤器
}
}
}
}
, "mappings": {
"properties": {
"title":
{
"type":"text",
"analyzer": "my_analyzer"
}
}
}
}
验证
POST hotel/_analyze
{
"field": "title",
"text": "我的酒店"
}
IK 中使用停用词
没有设置停用词时
POST _analyze
{
"analyzer": "ik_max_word",
"text":"一个清新的酒店"
}
- 在plugins/ik/config 中创建my_stopword.dic
在这个文件中添加停用词,换行存储
- 修改ik/config/IKAnalyzer.cfg.xml
- 重启es
- 重试