Elasticsearch1.x 和Elasticsearch2.x 拼音分词插件lc-pinyin安装教程
Elasticsearch1.x 基于lc-pinyin和ik分词实现 中文、拼音、同义词搜索
https://blog.csdn.net/chennanymy/article/category/6056806
Elasticsearch1.x 拼音分词实现全拼首字母中文混合搜索
https://blog.csdn.net/chennanymy/article/details/52336368
一、插件简介
elasticsearch-analysis-lc-pinyin是一款elasticsearch拼音分词插件,可以支持按照全拼、首字母,中文混合搜索。
首先举个栗子说明下,我们在淘宝搜索框中输入“jianpan” 可以搜索到关键字包含“键盘”的商品。不仅仅输入全拼,有时候我们输入首字母、拼音和首字母、中文和首字母的混合输入,比如:“键pan”、“j盘”、“jianp”、“jpan”、“jianp”、“jp” 等等,都应该匹配到键盘。通过elasticsearch-analysis-lc-pinyin这个插件就能做到类似的搜索
二、安装插件
elasticsearch-analysis-lc-pinyin一共有两个版本分别是1.4.5和2.2.2,和es的版本对应
1.4.5 这个版本对应ES1.X
2.2.2这个版本对应ES2.X
请根据需要安装对应的版本,下面地址中压缩包已经包含了这两个版本
es2.x的安装请参考:http://blog.csdn.net/chennanymy/article/details/52744154
下载地址:http://download.csdn.net/detail/chennanymy/9614699
当然也可以自己下载elasticsearch-analysis-lc-pinyin的源码自己maven build出来,这样可以避免版本冲突
git 地址:http://git.oschina.net/music_code_m/elasticsearch-analysis-lc-pinyin
如下,我已将下载下来的包放在 /home/chennan/soft 目录下,下面我将以elasticsearch1.4.5为例安装elasticsearch-analysis-lc-pinyin-1.4.5拼音分词器
进入到es的plugins目录,下面是未安装时的样子
接着打开终端命令行执行如下命令安装插件
[java] view plain copy
./../bin/plugin --install analysis-lc-pinyin --url file:/home/chennan/soft/elasticsearch-analysis-lc-pinyin-1.4.5.zip
粗线上面结果就表示安装成功了 ^ ^,安装完成后会在plugins目录下生成一个 analysis-lc-pinyin的目录,如下
接下来配置elasticsearch.yml,在末尾加上如下配置,如下因为我也安装了IK分词器所以配置这样,如果你没有安装IK可以将下面ik的部分删除
[java] view plain copy
index:
analysis:
analyzer:
ik:
alias: [ik_analyzer]
type: org.elasticsearch.index.analysis.IkAnalyzerProvider
ik_max_word:
type: ik
use_smart: false
ik_smart:
type: ik
use_smart: true
lc:
alias: [lc_analyzer]
type: org.elasticsearch.index.analysis.LcPinyinAnalyzerProvider
lc_index:
type: lc
analysisMode: index
lc_search:
type: lc
analysisMode: search
然后启动es,这里我启动两个节点。从启动日志中可以看到es成功加载了拼音插件,如下
到这里,插件就安装完成了。我们可以通过一个简单的curl命令来测试分词器时候正常工作
[java] view plain copy
curl -XGET '192.168.0.107:9200/_analyze?analyzer=lc_search&pretty' -d 'dafeiji'
输入“dafeiji”可以切分出来“da”、“fei”、“ji” 证明一切都OK啦
接下来就来试试借助这个拼音分词器来执行搜索,看看效果
1、首先建立一个索引 ,然后执行putmapping , 这里的索引名叫index,type叫fulltext,其中content这个字段采用拼音分词。注意这里用到两个不同的分词器
索引过程采用:lc_index分词器
搜索过程采用:lc_search分词器
[java] view plain copy
curl -XPUT http://localhost:9200/index
curl -XPOST http://localhost:9200/index/fulltext/_mapping -d'
{
"fulltext": {
"_all": {
"index_analyzer": "lc_index",
"search_analyzer": "lc_search",
"term_vector": "no",
"store": "false"
},
"properties": {
"content": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"index_analyzer": "lc_index",
"search_analyzer": "lc_search",
"include_in_all": "true",
"boost": 8
}
}
}
}'
然后索引几条数据,这里索引的4个公司的名称,陆金所、阿里巴巴、腾讯、百度、如下:
接下来执行几个搜索,查询的DSL像这样
[java] view plain copy
{
"query": {
"match": {
"content": {
"query": "bai度",
"analyzer": "lc_search",
"type": "phrase"
}
}
},
"highlight": {
"pre_tags": [
""
],
"post_tags": [
""
],
"fields": {
"content": {}
}
}
}
搜索“bai度”
搜索“阿li巴b”
搜索“ljs”
搜索“alibb”
搜索“lujinsuo”
下面使用es 客户端来做查询
[java] view plain copy
@Test
public void testPinyinSearch() {
final String index = "index";
final String type = "fulltext";
SearchRequestBuilder requestBuilder = elasticIndexOperateHelper.getClient().prepareSearch(index).setTypes(type);
QueryBuilder pinyinSearch = QueryBuilders
.matchQuery("content", "lu金s")
.type(MatchQueryBuilder.Type.PHRASE)
.analyzer("lc_search")
.zeroTermsQuery(MatchQueryBuilder.ZeroTermsQuery.NONE);
SearchResponse response = requestBuilder
.setQuery(pinyinSearch)
.setHighlighterPreTags("</tag1>")
.setHighlighterPostTags("<tag1>")
.addHighlightedField("content")
.execute().actionGet();
System.out.println(response);
}
查询结果如下:
Elasticsearch2.x 拼音分词插件lc-pinyin安装教程
https://blog.csdn.net/chennanymy/article/details/52744154
关于lc-pinyin的具体使用这里就不做介绍了,使用方式请参考:《Elasticsearch1.x 拼音分词实现全拼首字母中文混合搜索》
由于该插件在ES1.x和ES2.x下的安装和使用有些不同,所以在这里需要针对2.x单独说明下。
一、安装
首先通过git下载lc-pinyin的源码,并切换到2.2.2这个分支:
[java] view plain copy
git clone git@git.oschina.net:music_code_m/elasticsearch-analysis-lc-pinyin.git
cd elasticsearch-analysis-lc-pinyin/
git checkout dev_2.2.2
接下来打开项目的pom.xml文件修改elasticsearch.version为你对应的es版本,这里以2.3.0为例
修改后,重新打包:
[java] view plain copy
mvn clean package
打包后的zip文件在这个路径:elasticsearch-analysis-lc-pinyin/target/releases/elasticsearch-analysis-lc-pinyin-2.2.2.zip
接下来将该文件拷贝到服务器上,用安装命令安装:
[java] view plain copy
./bin/plugin install file:../elasticsearch-plugins/elasticsearch-analysis-lc-pinyin-2.2.2.zip
二、使用
因为在ES2.x中mapping设置分词器的方式有所改变。
在1.x中我们通过index_analyzer和search_analyzer来设置索引期和搜索期的分词器。
在2.x中我们只能通过analyzer来设置一个全局分词器,search_analyzer来设置一个搜索期分词器,如下面圈红的地方:
Elasticsearch1.x 和Elasticsearch2.x 拼音分词插件lc-pinyin安装教程的更多相关文章
- ElasticSearch(三) ElasticSearch中文分词插件IK的安装
正因为Elasticsearch 内置的分词器对中文不友好,会把中文分成单个字来进行全文检索,所以我们需要借助中文分词插件来解决这个问题. 一.安装maven管理工具 Elasticsearch 要使 ...
- 中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)
2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包 ...
- solr 中文分词器IKAnalyzer和拼音分词器pinyin
solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 “冬天到了天气冷了小明不想上学去了”,点击右边的按钮,发现对每个字都进行分词. ...
- ElasticSearch 中文分词插件ik 的使用
下载 IK 的版本要与 Elasticsearch 的版本一致,因此下载 7.1.0 版本. 安装 1.中文分词插件下载地址:https://github.com/medcl/elasticsearc ...
- Elasticsearch拼音分词和IK分词的安装及使用
一.Es插件配置及下载 1.IK分词器的下载安装 关于IK分词器的介绍不再多少,一言以蔽之,IK分词是目前使用非常广泛分词效果比较好的中文分词器.做ES开发的,中文分词十有八九使用的都是IK分词器. ...
- 和我一起打造个简单搜索之IK分词以及拼音分词
elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字.所以我们引入 es 插件 es-ik.同时为了提升用户体验,引入 es-pinyin 插件.本 ...
- es 修改拼音分词器源码实现汉字/拼音/简拼混合搜索时同音字不匹配
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 在业务中经常会用到拼音匹配查询,大家都会用到拼音分词器,但是拼音分词器匹配的 ...
- elasticsearch安装分词插件
在常用的中文分词器.拼音分词器.繁简体转换插件.国内用的就多的分别是:elasticsearch-analysis-ikelasticsearch-analysis-pinyinelasticsear ...
- 【杂记】docker搭建ELK 集群6.4.0版本 + elasticsearch-head IK分词器与拼音分词器整合
大佬博客地址:https://blog.csdn.net/supermao1013/article/category/8269552 docker elasticsearch 集群启动命令 docke ...
随机推荐
- Sql Server 查看存储过程最后修改时间
Sql Server 查看存储过程最后修改时间 select * from sys.procedures order by modify_date desc
- nginx问题之nginx: could not build server_names_hash, you should increase server_names_hash_bucket_size解决方案
昨天在nginx上部署了一个网站后,发现访问不了,再去访问之前部署的网站,发现都访问不了了,去看下下nginx,发现nginx服务停止了,没有在运行,重启了下服务,发现还是一样,就去看了下nginx的 ...
- Cent OS 下 VI 使用方法
vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 1) 命 ...
- idea 普通文件夹 转换成 module
经常会遇到从GitHub上download的progect在idea里面打开是普通文件夹形式,而并不是我们想要的module形式(文件夹图标右下角有个蓝色的tag),那么如何快速转换成我们想要的mod ...
- 50-Identity MVC:DbContextSeed初始化
1-创建一个可以启动时如果没有一个账号刚创建1个新的账号 namespace MvcCookieAuthSample.Data { public class ApplicationDbContextS ...
- ABAP CDS ON HANA-(4)ヘッダー行編集
Explicit Name List use in CDS We create a simple CDS View like below. @AbapCatalog.sqlViewName: ‘ZS ...
- Sphinx与coreseek
Sphinx : 高性能SQL全文检索引擎 分类 编程技术 Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据 ...
- 「暑期训练」「基础DP」FATE(HDU-2159)
题意与分析 学习本题的时候遇到了一定的困难.看了题解才知道这是二重背包.本题的实质是二重完全背包.二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种 ...
- ubuntu 把软件源修改为国内源
国内有很多Ubuntu的镜像源,比如:阿里源.网易源等,还有很多教育网的源,比如:清华源.中科大源等. 这里以清华源为例讲解如何修改Ubuntu 18.04里面默认的源. 修改步骤 第一步:备份原始源 ...
- Qt Qwdget 汽车仪表知识点拆解5 标题栏图标闪烁
先贴上效果图,注意,没有写逻辑,都是乱动的 看下最上面的部分,有一些仪表图标在闪烁,如果一个一个写,也是可以实现的,不过感觉要累死的节奏 这里我写了一个我自己的Label,完了把把这些QLabel提升 ...