1.es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体。(如果单个字匹配,计算匹配度,不需要分词)
内置分词器默认为:standard,单词会被拆分,大小会转换为小写,每个中文字都会被拆分为独立的个体。
IKAnalyzer: 免费开源的java分词器,目前比较流行的中文分词器之一,简单,稳定,学习成本低,想要特别好的效果,需要自行维护词库,支持自定义词典。
github:https://github.com/medcl/elasticsearch-analysis-ik
作者:medcl。elastic项目组成员,Elastic中文社区维护者。
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
查看插件列表:sudo {ES_HOME}/bin/elasticsearch-plugin list
移除插件:sudo {ES_HOME}/bin/elasticsearch-plugin remove [pluginname]
c.解压到ik文件。将elascticsearch和kibana服务重启。
在Dev Tools中的Console界面的左侧输入命令,再点击绿色的执行按钮执行。
ik_max_word:将文本做最细粒度的拆分。比如:上海自来水来自海上,拆分为:上海、自来水、自来、水、来自、海上。
ik_smart:最粗粒度的拆分。比如:上海自来水来自海上,拆分为:上海、自来水、来自、海上。
对应mapping配置:'name'=>['type'=>'text',"index"=>true,"analyzer"=>'ik_max_word','search_analyzer'=>'ik_smart']
目录:D:\elasticsearch-6.8.6\plugins\ik\config
<entry key="ext_dict">custom/ext.dic</entry> 多个文件用;隔开
定义:盆底 盆底肌。需要重启es,若词条或者搜索不生效需要reindex。
Linux自定义词典与window一致,路径更加安装方式不一致,会有差别。
find / -name elasticsearch 查找es相关安装信息。
es安装目录:/usr/share/elasticsearch。
重启es:sudo /etc/init.d/elasticsearch restart
通过:sudo /etc/init.d/elasticsearch status查询
报错 could not find java; set JAVA_HOME or ensure java is in PATH
vim /ect/profile 查看java环境变量 /usr/local/java
查看es配置/etc/sysconfig/elasticsearch
发现# Elasticsearch Java path配置为空
sudo /etc/init.d/elasticsearch restart
路径与window不一致,通过命令安装,导致手动创建引入无效。
查找es运行日志文件:find / -name elasticsearch.log
日志文件路径:/var/log/elasticsearch/elasticsearch.log
/etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml 巨坑
测试分词配置路径 /etc/elasticsearch/analysis-ik
sudo /etc/init.d/elasticsearch restart
github:https://github.com/medcl/elasticsearch-analysis-pinyin
在扩展文件夹plugins新增pinyin文件。把下载的文件解压到该文件里。
'question_name' => ['type'=>'text', 'index' => true, "analyzer"=>'pinyin', 'search_analyzer'=>'pinyin']
es可以自定义分词器。(文档)https://github.com/elasticsearch-cn/elasticsearch-definitive-guide
理解:ik分词 然后将分词后的逐项结果通过filter交给拼音分词 。比如你好测试,ik会分成 你好、测试。然后你好交给pinyin会分词 ni,hao,nh,n,h 测试会分词 ce,shi,cs,c,s。
'question_name' => ['type'=>'text', 'index' => true, "analyzer"=>'ik_pinyin_analyzer', 'search_analyzer'=>'ik_pingying_smark']
上一篇: [转]YII2 常用数据库操作...
下一篇: 没有了