1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 搜索引擎 Elasticsearch 中文扩展分词器使用 更快更准确!

搜索引擎 Elasticsearch 中文扩展分词器使用 更快更准确!

时间:2022-04-15 08:45:40

相关推荐

搜索引擎 Elasticsearch 中文扩展分词器使用 更快更准确!

Elasticsearch是一个基于Lucene,Lucene是开源的Java索引检索组件。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

Elasticsearch 运行在一个分布式的环境中,从设计之初就考虑到了这一点,目的只有一个,让您永远高枕无忧。我们的集群可以随着您的需求的增长而增长——只需再添加一个节点就行。

前面讲过Elasticsearch安装和基本使用方法,小伙伴们可以翻翻历史文章,或在

/article/31176

【Elasticsearch 安装与增删改查的使用】

这里查看。

ES内置分词器

Standard Analyzer - 默认分词器,按词切分,小写处理Simple Analyzer - 按照非字母切分(符号被过滤), 小写处理Stop Analyzer - 小写处理,停用词过滤(the,a,is)Whitespace Analyzer - 按照空格切分,不转小写Keyword Analyzer - 不分词,直接将输入当作输出Patter Analyzer - 正则表达式,默认\W+(非字符分割)Language - 提供了30多种常见语言的分词器Customer Analyzer 自定义分词器看概念太虚了!一定要动手实操才有用!我们可以用_analyze进行分析,会输出分词后的结果,举两个例子吧!其他的你也要自己课后动手试试哦!

#默认分词器 按词切分 小写处理

GET _analyze

{

"analyzer": "standard",

"text": "2 running Quick brown-foxes leap over lazy dogs in the summer evening."

}

#可以发现停用词被去掉了

GET _analyze

{

"analyzer": "stop",

"text": "2 running Quick brown-foxes leap over lazy dogs in the summer evening."

}

中文扩展分词器

苹果明明一个词,不想让它分为两个呀!中文分词在所有搜索引擎中都是一个很大的难点,中文的句子应该是切分成一个个的词,但是一句中文,在不同的上下文,其实是不同的理解,例如: 这个苹果,不大好吃/这个苹果,不大,好吃。

有一些比较不错的中文分词插件:IK、THULAC等。我们可以试试用IK进行中文分词。

#安装插件

/download/31278

在plugins目录下创建analysis-ik目录 解压zip包到当前目录 重启ES

#查看插件

bin/elasticsearch-plugin list

#查看安装的插件

GET http://localhost:9200/_cat/plugins?v

IK分词器:支持自定义词库、支持热更新分词字典

ik_max_word: 会将文本做最细粒度的拆分,比如会将“这个苹果不大好吃”拆分为"这个,苹果,不大好,不大,好吃"等,会穷尽各种可能的组合;ik_smart: 会做最粗粒度的拆分,比如会将“这个苹果不大好吃”拆分为"这个,苹果,不大,好吃"curl -X GET "localhost:9200/_analyze?pretty" -H Content-Type: application/json -d

{

"analyzer" : "ik_max_word",

"text" : "这个苹果不大好吃"

}

如何使用分词器

列举了很多的分词器,那么在实际中该如何使用呢?看看下面这个代码演示就懂啦!

# 创建索引时候指定某个字段的分词器

PUT iktest

{

"mappings": {

"properties": {

"content": {

"type": "text",

"analyzer": "ik_smart"

}

}

}

}

# 插入一条文档

PUT iktest/_doc/1

{

"content":"这个苹果不大好吃"

}

# 测试分词效果

GET /iktest/_analyze

{

"field": "content",

"text": "这个苹果不大好吃"

}

--

知识分享,时代前行!~~ 时代Java还有更多好文章……请查看历史和官网。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。