analysis-ik
analysis-ik copied to clipboard
6.7.2,”黎明前的黑暗“ 分词报错 startOffset must be non-negative, and endOffset must be >= startOffset
PUT /names
{
"mappings": {
"_doc": {
"properties": {
"name":{
"type":"text",
"analyzer" : "ik_max_word",
"search_analyzer" : "ik_smart"
}
}
}
}
}
POST /names/_doc
{
"name":"黎明前的黑暗"
}
报错:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=2,endOffset=3,lastStartOffset=3 for field 'name'"
}
],
"type": "illegal_argument_exception",
"reason": "startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=2,endOffset=3,lastStartOffset=3 for field 'name'"
},
"status": 400
}
ES 6.7.0 IK 6.7.0 【黎明前的黑暗】也出现错误
6.3.2 正常
@medcl 6.7.2同样的问题.
ik_smart正常,ik_max_word报错。Please have a look!
我好像知道问题是怎么回事了。
GET _analyze?pretty
{
"analyzer": "ik_max_word",
"text": "黎明前的黑暗"
}
结果:
{
"tokens" : [
{
"token" : "黎明前的黑暗",
"start_offset" : 0,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "黎明前",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "黎明",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "的",
"start_offset" : 3,
"end_offset" : 4,
"type" : "CN_CHAR",
"position" : 3
},
{
"token" : "前",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 4
},
{
"token" : "的",
"start_offset" : 3,
"end_offset" : 4,
"type" : "CN_CHAR",
"position" : 5
},
{
"token" : "黑暗",
"start_offset" : 4,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 6
}
]
}
里面有两个"的"。
emmm,怎么这么多重复的issue.. https://github.com/medcl/elasticsearch-analysis-ik/issues/652#issuecomment-477600224
请问6.5.0版本也遇到这个问题了,如何解决呢?
请问6.5.0版本也遇到这个问题了,如何解决呢?
@llnjava 我是换了新的插件,https://github.com/sing1ee/elasticsearch-jieba-plugin 注意一下版本的问题:https://github.com/sing1ee/elasticsearch-jieba-plugin/issues/37
版本6.6.1不存在这个问题,可以通过修改配置文件plugin-descriptor.properties中的版本参数,来适配所用的Elasticsearch版本。
版本6.6.1不存在这个问题,可以通过修改配置文件plugin-descriptor.properties中的版本参数,来适配所用的Elasticsearch版本。
能说清楚点吗。。。 【版本6.6.1不存在这个问题】 是ES版本,还是plugin版本? 【修改配置文件plugin-descriptor.properties中的版本参数】修改es的版本参数,还是plugin的?
@zhuxiuwei ,在 Elasticsearch 6.x所有版本中,你都可以使用插件:elasticsearch-analysis-ik-6.6.1.zip(手动解压到 es 的 plugins 目录中),并修改配置文件plugin-descriptor.properties中的版本参数,来适配所用的Elasticsearch版本。若还有疑问,请打开链接扫码加微信,当面聊
这个问题,是因为后面的词的startoffset大于前面的startoffset导致的。只需要解决分词结果中每个词的startoffset按照顺序产生就没问题了,一般是分词器的bug。
这个bug 在 6.8.23 中还是会出现,ServerError: Type: illegal_argument_exception Reason: "startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=27,endOffset=28,lastStartOffset=28 for field 'Subtitle'"