不要急,总有办法的

关于match_phrase和match_phrase_prefix的疑问

Elasticsearch | 作者 JimmyGao | 发布于2022年04月27日 | 阅读数:1125

1. 我有一个字符串“111aaa333”,用ik_max_word分词,分词结果如下:
{
"tokens" : [
{
"token" : "111aaa333",
"start_offset" : 0,
"end_offset" : 9,
"type" : "LETTER",
"position" : 0
},
{
"token" : "111",
"start_offset" : 0,
"end_offset" : 3,
"type" : "ARABIC",
"position" : 1
},
{
"token" : "aaa",
"start_offset" : 3,
"end_offset" : 6,
"type" : "ENGLISH",
"position" : 2
},
{
"token" : "333",
"start_offset" : 6,
"end_offset" : 9,
"type" : "ARABIC",
"position" : 3
}
]
}
搜索语句如下:
{
  "query": {
    "match_phrase": {
      "title": "aaa333"
    }
  }
}


          结果搜索不到这个"111aaa333"这个title。但是根据match_phrase的定义,aaa 和 333这两个token都匹配上了,而且他们的positon相差1,应该是符合条件的啊。 但是搜索"aaa 333",中间加个空格就可以搜到了,感觉很奇怪!

        同理match_phrase_prefix,搜索"aaa3"或者"aaa33"也搜不到这个title,按理说3和33都是333的前缀,应该是能搜到的。
以上连个疑问还请大神答疑
 
已邀请:

Charele - Cisco4321

赞同来自:

555.png

 
加个profile就晓得昨肥4了,
既然是max分词,相应它出来的要求也是max的
它要求你里面要包含"aaa333", "aaa", "333"这三个词

要回复问题请先登录注册