例如,对于“大黑牛”,分词如下:
但是,用户实际上搜索的是“大牛”,分词如下:
因此,搜索“大牛”找不到“大黑牛”的结果。
简单的想法是把分词改为单字分词,自带的standard分词器就是这种效果,但是那样也失去了分词的意义。
如何尽量保证分成了所有的分词可能呢?能不能在ik_max_word基础上做一些改进呢?
或者简单的说,该如何处理搜索“大牛”找不到“大黑牛”这种情况呢?
谢谢。
{
"tokens" : [
{
"token" : "大",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "黑",
"start_offset" : 1,
"end_offset" : 2,
"type" : "CN_CHAR",
"position" : 1
},
{
"token" : "牛",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 2
}
]
}
但是,用户实际上搜索的是“大牛”,分词如下:
{
"tokens" : [
{
"token" : "大牛",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
}
]
}
因此,搜索“大牛”找不到“大黑牛”的结果。
简单的想法是把分词改为单字分词,自带的standard分词器就是这种效果,但是那样也失去了分词的意义。
如何尽量保证分成了所有的分词可能呢?能不能在ik_max_word基础上做一些改进呢?
或者简单的说,该如何处理搜索“大牛”找不到“大黑牛”这种情况呢?
谢谢。
1 个回复
rochy - rochy_he
赞同来自: tygcs
搜索的时候,结合(dis_max_query)原字段和附加字符的搜索结果即可