导致分词结果不准的原因有:
1、对索引使用了5个shard,当进行查询时却只对其中的三个shard进行了查询。
2、把词频统计的概念搞混了:
比如说总共有三条数据
"你知道我知道你不知道的事吗"
"我不知道你知道我不知道的事"
"你怎么不知道我知道你知道的事"
查询时返回的结果:
{
"key": "知道",
"doc_count": 3
}
我之前理解上的词频统计:"知道"的个数应该是9才对,但其实是aggs统计的是各个关键词命中的文档(数据)个数。所以"知道"一共在三条数据中出现,doc_count为3没有问题。
elasticsearch词频统计测试
```
1、创建索引
put http://ip:9200/索引名
{
"mappings":{
"properties": {
"id": {
"type": "long"
},
"talkId":{
"type":"text"
},
"content": {
"type": "text",
"analyzer":"ik_max_word",
"fielddata": true,
"boost":8
},
"createDate":{
"type" :"date" ,
"format":"yyyy-MM-dd HH:mm:ss"
}
}
}
}
2、插入数据
post http://ip:9200/索引名/_doc/1
{
"id": 1,
"talkId":"8c97dcf478a445f5b775080991d00fd7",
"createDate":"2020-05-15 12:04:00",
"content": "你知不知道我知道你知道而我不知道的事"
}
3、进行词频统计
post http://ip:9200/索引名/_search
{
"size" : 0,
"aggs" : {
"messages" : {
"terms" : {
"size":5, #数量
"field" : "content" #字段
}
}
}
}
```