IK分词器对数字是不是不分词?

作者 aimerwhy | 发布于2018年09月18日 | 阅读数:320

1.场景:
mapping:        
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
 
越秀区越华路185号二楼全层,北塔8楼自编805至809号
我搜索‘8’只有8楼这个数字高亮,185 805 809都没有高亮。
 
2.问题:IK分词器对数字是不是不分词呀?有什么办法让它对数字也分词?比如123--》1 12 13 23 123这种。
已邀请:

端小强 - 90后Java

赞同来自: aimerwhy

ik_max_word数字不会进一步拆分(刚刚是我本地词库影响了,抱歉了各位)
123--》1 12 13 23 123这个效果可以使用ngram实现。
ngram可以参考官网:https://www.elastic.co/guide/e ... .html

夏李俊

赞同来自: aimerwhy

这个问题,可以查看源码org.wltea.analyzer.core.LetterSegmenter
Ik-分词,会吧所有字母凑在一起,数字凑在一起,中文按ik的dic文件中的词组拆分
如:越秀区越华路185号二楼全层,北塔8楼A座自编805至809号,Mike收
会拆分成如下碎片
越秀区越华路 (请考虑词组,可能会是 [越秀区,越华路])
185
号二楼全层 (请考虑词组,)
北塔 (请考虑词组,
8

A
座自编 (请考虑词组,
805

809

Mike

 
 
 

elasticStack - 90后it大数据男

赞同来自: aimerwhy

1.首先你的分词数据全部看成一个整体, 所以你搜8得到"8楼"的数字高亮,
是因为你索引表中有个token是8,其它的数字185 805 809都会被看成一个整体,
就像你说的IK不对数字分词.
2.如果你想数字也分词的话,那么官网有个N-ngram https://www.elastic.co/guide/e ... .html
这个分的很细

rochy - rochy_he@jointsky

赞同来自: aimerwhy

1. 默认IK是不会对数字进行分词的,连续的数字会形成单个 Term(Token);
2. 如果希望数字 123 被切分为:1/12/123/2/23/3 你可以使用 ngram 切分。

elasticStack - 90后it大数据男

赞同来自:

企业微信截图_15372627064396.png
你是在开玩笑??? 
@端小强

端小强 - 90后Java

赞同来自:

额,你试下全部输入呢,我是这么试的?@elasticStack
123.png

elasticStack - 90后it大数据男

赞同来自:

企业微信截图_15372647892909.png

 

Xiaoming - 80s

赞同来自:

遇到一个问题,分词后没有加上高亮 

1541056208662.jpg

 
下面是我的具体mapping ,数据
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "my_tokenizer"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "ngram",
"min_gram": 1,
"max_gram": 20,
"token_chars": [
"letter",
"digit"
]
}
}
}
}
}
PUT /my_index/_mapping/tech
{

"tech": {
"properties": {
"title": {
"type": "text",
"analyzer": "my_analyzer",
"index_options":"offsets"
}
}
}

}
# 添加数据
POST my_index/tech/1
{

"title": "中国456mor"
}

POST my_index/tech/2
{

"title": "科普老人家456mor"
}

GET /my_index/_search
{
"query":{
"term":{
"title":"mor"
}
},
"highlight":{
"pre_tags":[
"<span>"
],
"post_tags":[
"</span>"
],
"fields":{
"title":{
"type":"plain",
"number_of_fragments":1,
"fragment_size":100
}
}
}
}
#结果
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.27233246,
"hits": [
{
"_index": "my_index",
"_type": "tech",
"_id": "5",
"_score": 0.27233246,
"_source": {
"title": "中国456mor"
},
"highlight": {
"title": [
"中国456<span>mor</span>"
]
}
},
{
"_index": "my_index",
"_type": "tech",
"_id": "3",
"_score": 0.2593973,
"_source": {
"title": "科普老人家456mor"
},
"highlight": {
"title": [
"科普老人家456mor"
]
}
}
]
}
}

要回复问题请先登录注册