如何把两个字符串进行ik分词,得出匹配度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把两个字符串进行ik分词,得出匹配度相关的知识,希望对你有一定的参考价值。

参考技术A public void onCreateA(SQLiteDatabase db)

System.out.println("On create works");

try
db.execSQL("DROP TABLE IF EXISTS actuator;");
db.execSQL("CREATE TABLE IF NOT EXISTS actuator ("+
"ACTUATOR_ID INT(11) NOT NULL,"+
"ACTUATOR_HW_ID int(11) DEFAULT NULL,"+
"DEVICE_NAME TEXT(45) DEFAULT NULL,"+
"DEVICE_TYPE TEXT(45) DEFAULT NULL,"+
"DEVICE_SUB_TYPE TEXT(45) DEFAULT NULL,"+
"LOCATION_ID INT(11) DEFAULT NULL,"+
"STATUES_VALUE REAL DEFAULT NULL,"+
"MAX_STATUES_VALUE REAL DEFAULT NULL,"+
"MIN_STATUES_VALUE REAL DEFAULT NULL,"+
"PRIMARY KEY (`ACTUATOR_ID`))");

System.out.println("table created now values will be added");

System.out.print("DONE!");

catch (SQLException e)

System.out.println("table is not created");


try
db.execSQL("INSERT INTO actuator (ACTUATOR_ID, ACTUATOR_HW_ID, DEVICE_NAME, DEVICE_TYPE, DEVICE_SUB_TYPE, LOCATION_ID, STATUES_VALUE, MAX_STATUES_VALUE, MIN_STATUES_VALUE) " +
"VALUES (1, 2, 'Heat Sensor FX615','Heat Sensor', 'Optic Heat Sensor', 4, 6, 7, 8) " );
System.out.println("values are added");
catch (Exception e)

e.printStackTrace();
System.out.println("values are not added");


try
db.execSQL("SELECT * FROM actuator");
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("not selected");


Windows使用Ik分词器插件

IK分词器插件

什么是Ik分词器?

分词:即把一段中文或者别的划分成一个个关键字,我们在搜索的的时候回把自己的信息进行分词,回把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词。

Ik分词器两种分词模式:

  • ik_max_word: 会将文本做最细粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌",会穷尽各种可能的组合;

  • ik_smart: 会做最粗粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,国歌"。

安装

下载安装 https://github.com/medcl/elasticsearch-analysis-ik/releases ,解压到 elasticsearch下的plugin目录,重启加载即可,可以看到Ik分词器被加载了。

技术图片

可以通过 elasticsearch-plugin 命令查看加载进来的插件:

技术图片

在Kibana中使用分词器

GET _analyze
{
  "analyzer": "ik_smart",
  "text": ["我是中国人"]
}


GET _analyze
{
  "analyzer": "ik_max_word",
  "text": ["我是中国人"]
}

查看不同的分词效果,其中 ik_smart 为最少分词效果

技术图片

ik_max_word 为最细粒度划分!穷尽词库的可能!

技术图片

问题:

我们输入 “我很喜欢敲代码“,发现 ”敲代码“ 三个字被拆开了。

技术图片

类似这种需要的次,我们需要自己加入到我们的分词字典当中!

技术图片

保存完成之后重启 Es和Kibana 访问即可!

以上是关于如何把两个字符串进行ik分词,得出匹配度的主要内容,如果未能解决你的问题,请参考以下文章

Windows使用Ik分词器插件

Windows使用Ik分词器插件

ES中文分词器之精确短语匹配(解决了match_phrase匹配不全的问题)

elasticsearch默认分词与ik分词

百度中文分词如何分词

Solr5.5.1 IK中文分词配置与使用