例如,对于“大黑牛”,分词如下:
但是,用户实际上搜索的是“大牛”,分词如下:
 
因此,搜索“大牛”找不到“大黑牛”的结果。
简单的想法是把分词改为单字分词,自带的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)原字段和附加字符的搜索结果即可