在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

使用ik+pinyin分词后,高亮显示的问题

Elasticsearch | 作者 Wang Chenxu | 发布于2018年05月30日 | 阅读数:5322

查询语句:
{
"query" : {
"match" : {
"title" : "2017"
}
},
"highlight": {
"fields" : {
"title" : {}
}
}
}


结果:
{
"took": 15,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 23,
"max_score": 8.155465,
"hits": [
{
"_index": "room_search",
"_type": "db_room_video",
"_id": "fd0525c54c784dbf8881fb5115da290c",
"_score": 8.155465,
"_source": {
"id": "fd0525c54c784dbf8881fb5115da290c",
"title": "后摇/英伦/地下民谣 专场-Blondie 2017MV"
},
"highlight": {
"title": [
"后摇/英伦/地下民谣 专场-Blondie <em>2017MV</em>"
]
}
}
]
}
}


我搜索的2017,却高亮到了2017MV
检查了下规律是,如果数据里面,数字和英文字母连在一起,搜索数字将会出现这个问题
版本
es: 5.5.3
ik: 5.5.3
pinyin: 5.5.3
分词配置如下:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"index_ik_pinyin": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": ["index_pinyin", "word_delimiter"]
}
},
"filter": {
"index_pinyin": {
"keep_original" : true,
"keep_joined_full_pinyin": true,
"type" : "pinyin",
"term_vector": "with_positions_offsets"

}
}
}
}
},
"mappings": {
"db_room_video": {
"_all": {
"enabled": false
},
"properties": {
"title": {
"type": "text",
"analyzer" : "index_ik_pinyin",
"search_analyzer" : "ik_max_word"
}
}
}

}
}


 
已邀请:

medcl - 今晚打老虎。

赞同来自:

ik 和 pinyin 有多种配置,只有 offset 正确,高亮显示才会正确,所有有分词结果有词语重叠的分词情况,也就是“中国人”分成中国、国人,国就是重叠了的这种,拼音也是一样,允许重叠是允许按多种 term 来进行命中,所以这种使用 offset 基本上都是要忽略的,也就是高亮都可能不准。

要回复问题请先登录注册