全文搜索和中文分词主要介绍了两组全文搜索加中文分词方案;
TNTSearch+jieba-php这套组合对于博客这类的小项目基本够用了;
但是如果最求性能追求更强大的功能的话;
那更优的选择就非 elasticsearch 莫属了;
elasticsearch 需要 java8 以上;
这里安装最新版的 java10 ;
下载 jdk
因为版本会一直升级;
如果执行上面这段代码返回了 ERROR 404: Not Found ;
那说明有新版本了;
那就自己去官网复制最新的下载链接;
http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html ;
选中 Accept License Agreement 然后在 jdk-10.0.1_linux-x64_bin.rpm 上右键复制链接地址;
替换上面命令中的下载链接;
安装 jdk 注意文件名要跟链接中的保持一直;
能查看到版本号则表示安装成功;
下载 elasticsearch ;
安装 elasticsearch ;
安装完成后编辑配置项
去掉下面三行的注释;
启动 elasticsearch ;
稍等片刻给 elasticsearch 个启动的时间;
因为 elasticsearch 启动的略慢;
后续涉及到重启 elasticsearch 的时候也都记得稍等片刻;
然后查看 9200 端口检查是否成功启动;
如果半天过后仍然没有启动起来;
可能是内存不够出错;
把内存改为自己服务器内存的一半以下;
比如说这里改为 512M ;
尝试启动;
查看状态是否正常;
至此 elasticsearch 算是安装完成了;
但是如果想用来搜索中文;
还需要安装中文分词;
怎么算分词呢?
全文搜索和中文分词 文章中已经简单介绍过了;
这里我们从 elasticsearch 实战一遍;
比如说 白俊遥技术博客
这句话;
elasticsearch内置的分词器对中文相当不友好;
只会一个只一个字的分;
所以我们需要一个中文分词器;
这里选择和 elasticsearch 配套的 ik-analyzer ;
安装 ik-analyzer ;
如果报下面这种错误的话可能是网络不好;
沐浴更衣大念帅白最帅;
再试几次即可;
然后重新启动下服务;
看下 ik-analyzer 的效果;
我们可以看到 技术 和 博客 两个词语已经成功组合到了一起;
然而本博主 白俊遥 的名字被硬生生的拆成了3个字这怎么忍;
还好强大的 analysis-ik 支持自定义词库;
增加自定义词库;
重新启动下服务;
再看下分词效果 ;
双击 666 ;
本来准备一口气把 elasticsearch 在 laravel 中的应用也写完的;
不过看着情形今个是完不成了;
下篇文章继续哈;
另外给个用于在线测试的教程:腾讯云开发者实验室
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客https://baijunyao.com 欢迎捐赠赞赏加入组织创建QQ群及捐赠渠道
Maybe :7.3 按照文档教程安装,分词设置没有起作用,有大佬帮忙分析一下哪里可能会出问题吗
2020-09-16 10:53:19 回复
Ryan :白老师 能否出一个ik热更新教程
2020-03-25 17:46:40 回复
莫过于此 :对于elasticsearch还是有bug,(1,并不能做到全局的模糊搜索,2,当一句话有英文单词这句话就实现不了中文分词)希望有大神帮忙回答一下。
2019-03-01 15:28:09 回复
花舞千魂殇 :请教大大 这个如何像sphinx一样做增量索引
2019-02-14 17:26:16 回复
tell me why :没装 ik-analyzer 可以搜索,成功装了中文分词 ik-analyzer 之后,再次搜索出现以下信息。{ "error" : { "root_cause" : [ { "type" : "remote_transport_exception", "reason" : "[mua5ccn][127.0.0.1:9300][indices:admin/analyze[s]]" } ], "type" : "illegal_argument_exception", "reason" : "failed to find global analyzer [ik_max_word]" }, "status" : 400}有自定义词库并且词库内容是博主的一致。请问这是什么问题?
2018-08-29 11:15:12 回复
tell me why :之前装完,有重启elasticsearch,怎么都不行,后来重启电脑不知道怎么的就好了
2018-08-29 17:58:27 回复
Allen :network.host只能为localhost吗,我改为虚拟机的ip或者改成0.0.0.0 都启动不了es了
2018-08-21 17:49:10 回复
嘉 :双击666!!!
2018-07-19 16:26:31 回复
简简单单 :谢谢白大侠
2018-06-27 12:00:07 回复
Speech :
2018-06-09 20:18:27 回复
冰是睡着的水 :白大哥,请教个问题,用thinkphp3.2 自带的下载函数,本地测试可以正常下载。可以上传到服务器,我也去pwd 查看绝路径,而且文件大小,tp自带下载类也可以读取,执行header ,网页直接无法连接,这是什么情况?谢谢啦
2018-06-07 09:32:11 回复
云淡风晴 :服务器开启debug;看下啥错误;
2018-06-24 19:45:42 回复
最新评论