要不要再翻翻文档呢?

关于ik_max_word分词的疑问

Elasticsearch | 作者 greenjim20 | 发布于2018年11月15日 | 阅读数:5759

背景描述:
某字段用ik_max_word分词
GET _analyze?pretty
{
"analyzer": "ik_max_word",
"text": "清新"
}
{
"tokens": [
{
"token": "清新",
"start_offset": 0,
"end_offset": 2,
"type": "CN_WORD",
"position": 0
},
{
"token": "新",
"start_offset": 1,
"end_offset": 2,
"type": "CN_WORD",
"position": 1
}
]
}
问题:
GET sogal_watermeitu/solution/_search
{
"query": {
"bool" : {
"must" : [
{"term" : {"solution_name" : "清新"}}
]
}},"size": 100
}

GET sogal_watermeitu/solution/_search
{
"query": {
"bool" : {
"must" : [
{"term" : {"solution_name" : "新"}}
]
}},"size": 100
}
分别搜索“清新“和“新“关键字,都能搜到结果,但是“新“的结果里面没有包含“清新“关键字。疑问:“清新“分词中有“新“,但是搜“新“却搜索不出来,导致了

GET sogal_watermeitu/solution/_search
{
"query": {
"bool" : {
"must" : [
{"term" : {"solution_name" : "新"}}
],
"must" : [
{"term" : {"solution_name" : "清新"}}
]
}},"size": 100
}
找不到结果,即是
GET sogal_watermeitu/solution/_search
{
"query": {
"match": {
"solution_name": {
"query": "清新",
"analyzer": "ik_max_word",
"operator": "and"
}
}
}
}
同样找不到结果
已邀请:

rochy - rochy_he

赞同来自:

可以考虑在句子级别上看一下 ik_max_word 的分词结果;
上述的查询没有问题

rochy - rochy_he

赞同来自:

GET _analyze?pretty
{
"analyzer": "ik_max_word",
"text": "清新的空气"
}
看一下分词结果
 
从我本地的查询结果来看
清新 是没有被细分的,不知道你的 ik_max_word 是如何设置的,使得 清新 被分为了 清新 和 新

greenjim20

赞同来自:

有人能解答一下这个问题吗,这是本来的机制问题,还是刚好这个词有bug?
如果是本来机制问题,那就很奇怪了。
只能通过
GET sogal_watermeitu/solution/_search
{
"query": {
"match": {
"solution_name": {
"query": "清新",
"analyzer": "ik_max_word",
"operator": "or"
}
}
}
}
来搜索"清新"关键词,或者不用分词方式来搜索。
这样搜索会多出来"新"的结果集。

要回复问题请先登录注册