今天使用must_not进行过滤的时候,发现“五一”关键词过滤不掉,例如标题“五一劳动节放假通知”,后来经过反复的探索,发现是分词器的问题。1
2
3
4
5GET /_analyze
{
"analyzer": "ik_smart",
"text": "五一劳动节放假通知"
}
分词结果如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25{
"tokens": [
{
"token": "五一劳动节",
"start_offset": 0,
"end_offset": 5,
"type": "CN_WORD",
"position": 0
},
{
"token": "放假",
"start_offset": 5,
"end_offset": 7,
"type": "CN_WORD",
"position": 1
},
{
"token": "通知",
"start_offset": 7,
"end_offset": 9,
"type": "CN_WORD",
"position": 2
}
]
}
会把“五一劳动节”当成一个token,而不是“五一”和“劳动节”,所以“五一”关键词就匹配不都了。
使用某个索引
1 | GET _analyze |