求教ElasticSearch 添加 IK 分词 · Ruby China

求教ElasticSearch 添加 IK 分词 · Ruby China,第1张

Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词。例如:

我们会得到这样的结果:

[html] view plain copy

{

tokens: [

{

token: text

start_offset: 2

end_offset: 6

type: <ALPHANUM>

position: 1

}

{

token: 我

start_offset: 9

end_offset: 10

type: <IDEOGRAPHIC>

position: 2

}

{

token: 是

start_offset: 10

end_offset: 11

type: <IDEOGRAPHIC>

position: 3

}

{

token: 中

start_offset: 11

end_offset: 12

type: <IDEOGRAPHIC>

position: 4

}

{

token: 国

start_offset: 12

end_offset: 13

type: <IDEOGRAPHIC>

position: 5

}

{

token: 人

start_offset: 13

end_offset: 14

IKAnalyzer.cfg.xml中:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>

<comment>IK Analyzer 扩展配置</comment>

<!--用户可以在这里配置自己的扩展字典-->

<entry key="ext_dict">/word.dic</entry>

<!--用户可以在这里配置自己的扩展停止词字典-->

<entry key="ext_stopwords">/ext_stopword.dic/stopwords1.dic</entry>

</properties>

<meta charset="utf-8">

ik配置文件地址:es/plugins/ik/config目录

IKAnalyzer.cfg.xml:用来配置自定义词库

main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起

quantifier.dic:放了一些单位相关的词

suffix.dic:放了一些后缀

surname.dic:中国的姓氏

stopword.dic:英文停用词

main.dic:包含了原生的中文词语,会按照这个里面的词语去分词

stopword.dic:包含了英文的停用词

停用词,stopword

a the and at but

一般,像停用词,会在分词的时候,直接被干掉,不会建立在倒排索引中

(1)自己建立词库:每年都会涌现一些特殊的流行词,网红,蓝瘦香菇,喊麦,鬼畜,一般不会在ik的原生词典里

自己补充自己的最新的词语,到ik的词库里面去

IKAnalyzer.cfg.xml:ext_dict,custom/mydict.dic

补充自己的词语,然后需要重启es,才能生效

(2)自己建立停用词库:比如了,的,啥,么,我们可能并不想去建立索引,让人家搜索

custom/ext_stopword.dic,已经有了常用的中文停用词,可以补充自己的停用词,然后重启es


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11387197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存