ES IK拼音插件踩坑及填坑記錄

問題發(fā)現(xiàn)

最近在給es插入文檔的時候,忽然報(bào)錯裹粤,提示如下:

ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=0,endOffset=3,lastStartOffset=3 for field 'title.pinyin']]

感覺是在用ik拼音分詞的時候報(bào)的錯终蒂。

排查過程

并不是所有的文檔在插入的時候會報(bào)錯,只有在title字段包含特殊符號的時候會報(bào)錯遥诉,上網(wǎng)查了一下原因拇泣,說是ik拼音插件的錯誤,只需要升級一下插件的版本即可矮锈。

然而因?yàn)橛玫氖前⒗镌频膃s服務(wù)霉翔,不能對插件進(jìn)行升級,所以這個方法行不通愕难。

也有說是因?yàn)椋瑢?shù)“ignore_pinyin_offset”設(shè)置為false后,并向pinyin分詞字段批量寫入數(shù)據(jù)猫缭,即會出現(xiàn)“startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards”異常葱弟。所以將ignore_pinyin_offset設(shè)為true即可。

設(shè)置前的配置:

"my_pinyin": {

?? "keep_first_letter": "false",

?? "ignore_pinyin_offset": "false",

?? "keep_joined_full_pinyin": "true",

?? "lowercase": "true", "padding_char": " ",

?? "first_letter": "prefix",

?? "keep_original": "true",

?? "remove_duplicated_term": "true",

?? "keep_separate_first_letter": "false",

?? "type": "pinyin", "keep_full_pinyin": "false"

}

設(shè)置后的配置:

"my_pinyin": {

? "keep_first_letter": "false",

? "ignore_pinyin_offset": "true",

? "keep_joined_full_pinyin": "true",

? "lowercase": "true",

? "padding_char": " ",

? "first_letter": "prefix",

? "keep_original": "true",

? "remove_duplicated_term": "true",

? "keep_separate_first_letter": "false",

? "type": "pinyin",

? "keep_full_pinyin": "false"

}

改完之后重新索引一遍文件猜丹,結(jié)果還是報(bào)這個錯芝加。

問題解決

就這么折騰了兩天之后,發(fā)現(xiàn)既然這是這個版本的本身的bug射窒,然后阿里云那邊又不給升級版本藏杖,那為什么不曲線救國呢?

前面一開始排查的時候發(fā)現(xiàn)脉顿,是標(biāo)題含有特殊符號的時候蝌麸,才會出現(xiàn)這個bug,那么可以在拼音分詞之前艾疟,再加一個filter来吩,把特殊符號過濾掉,自然就沒問題了蔽莱。

于是我先配置了一個filter:

"specialCharactersFilter":?{

? "pattern":?"\\p{Punct}",

? "type":?"pattern_replace",

? "replacement":?""

}

然后再把這個filter配置到analyzer里:

"ik_pinyin_analyzer": {

? "filter": [

??? "specialCharactersFilter",

??? "my_pinyin"

? ],

? "type": "custom",

? "tokenizer": "ik_smart"

}

這樣弟疆,在用ik_pinyin_analyzer分詞之前,會先通過specialCharactersFilter的正則表達(dá)式過濾盗冷,把所有的特殊符號都過濾掉怠苔,然后再用my_pinyin進(jìn)行拼音分詞。

這么處理后仪糖,就不會出現(xiàn)上面出現(xiàn)的錯誤了柑司。

注:上述配置都是個性化配置,得根據(jù)自己的習(xí)慣和要求來配置乓诽,不用照搬帜羊,只要是加個新建一個filter然后加到pinyin前即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸠天,一起剝皮案震驚了整個濱河市讼育,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稠集,老刑警劉巖奶段,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剥纷,居然都是意外死亡痹籍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門晦鞋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹲缠,“玉大人棺克,你說我怎么就攤上這事∠叨ǎ” “怎么了娜谊?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斤讥。 經(jīng)常有香客問我纱皆,道長,這世上最難降的妖魔是什么芭商? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任派草,我火速辦了婚禮,結(jié)果婚禮上铛楣,老公的妹妹穿的比我還像新娘近迁。我一直安慰自己,他們只是感情好蛉艾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布钳踊。 她就那樣靜靜地躺著,像睡著了一般勿侯。 火紅的嫁衣襯著肌膚如雪拓瞪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天助琐,我揣著相機(jī)與錄音祭埂,去河邊找鬼。 笑死兵钮,一個胖子當(dāng)著我的面吹牛蛆橡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掘譬,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼泰演,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了葱轩?” 一聲冷哼從身側(cè)響起睦焕,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎靴拱,沒想到半個月后垃喊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袜炕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年本谜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎窘。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡乌助,死狀恐怖溜在,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情他托,我是刑警寧澤炕泳,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站上祈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浙芙。R本人自食惡果不足惜登刺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗡呼。 院中可真熱鬧纸俭,春花似錦、人聲如沸南窗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽万伤。三九已至窒悔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敌买,已是汗流浹背简珠。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虹钮,地道東北人聋庵。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像芙粱,于是被迫代替她去往敵國和親祭玉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容