当前位置: 首页 >文章 > 相见恨晚!开源的傻瓜搜索引擎,帮你快速实现搜索功能
收藏
分享

相见恨晚!开源的傻瓜搜索引擎,帮你快速实现搜索功能

举报小虎转载君小虎转载君发布于 2021-08-132700阅读1点赞
如果说 MeiliSearch 缺点的话,我觉得搜索准确度还有待提高,一方面我需要学习下分词和 NLP 的一些知识...

傻瓜一词借鉴自傻瓜相机,又称轻便相机、全自动相机,通常指容易操作针对一般人而设计的小型全自动相机。

在 HelloGitHub 找到有趣、入门级的开源项目,大家好我是卤蛋。说到搜索第一个想到的应该是鼎鼎大名的 Elasticsearch,但 ES 对于个人项目有些重。

今天给大家带来一款轻盈、人人都会用的开源傻瓜搜索引擎——MeiliSearch

https://github.com/meilisearch/MeiliSearch

在介绍 MeiliSearch 之前,我想先聊下我是怎么找到它并喜欢上它的。

我的要求并不高

我开发的 HelloGitHub 小程序:支持关键字搜索往期月刊中的开源项目。

小程序的搜索功能是用 Rust 写的开源搜索引擎 Sonic,它虽然搜索速度快但使用过程中发现:

不支持中文分词,导致搜索结果较差
没有官方的 Python 客户端,三方开源客户端问题较多
搜索返回的结果仅有 ID,需要再去数据库关联其他数据
这些问题直接影响了搜索的体验,让我十分苦恼一边看搜索相关的知识,另外也在寻找新的开源解决方案。想找一个:

部署+配置简单、支持中文分词、搜索速度快、轻量级开源搜索引擎项目。

俗称:傻瓜中文搜索引擎。

它有个美丽的名字

它有个“美丽”(meili)的名字「MeiliSearch」,同样是用 Rust 写的开源搜索引擎,支持:

概述功能:搜索速度快、全文搜索、支持汉字、容易安装和维护,这不就是我在找的:傻瓜中文搜索引擎吗?

我已经摩拳擦掌的跃跃欲试了,话不多说搞起!

简单的开始
纸上得来终觉浅,得上手试试效果。

1、安装和启动
Linux & Mac OS 的一键安装和启动的命令:

curl -L https://install.meilisearch.com | sh

./meilisearch

这个安装够不够傻瓜启动成功如下图:

用浏览器访问:http://127.0.0.1:7700/ 就可以看到 MeiliSearch 提供的 Web 搜索页面。我提前写入了一些数据,用来演示搜索:

2、基本操作
MeiliSearch 就是一个搜索的服务,提供 RESTful API 通讯协议更加通用,官方提供了多种编程语言的客户端:

JavaScript
Python
PHP
Go
...
后面的演示将采用 Python 代码作为示例,安装 Python SDK:


用 Python 实现连接、写入、查询、删除等基本操作:

至此已经实现了搜索的最基本的功能,但探索不止于此。

3、优化搜索效果

MeiliSearch 可通过配置规则来提高搜索结果:

synonyms:同义词
stopWords:停用词(为节省存储空间和提高搜索效率,自动过滤掉某些字或词)
rankingRules:排序规则
...
可以用 Python 客户端更新 MeiliSearch 配置,示例代码:


这些设置可以有效的提高搜索效果,比如使用停用词之前,搜索“开源的书籍”命中不了“开源书籍”,加了停用词即可命中,因为匹配时忽略了输入内容包含的停用词(无用词)。

说一个我遇到的坑,我测试搜索效果时发现:go 搜不到,但是 golang 就可以搜索到,排查了半天最后发现是因为 go 在上面的停用词字典中

另外,功能上对比 sonic 没有词联想(suggest),可以通过新建 index+searchableAttributes 实现。

同义词集合我没有找到,如果大家有现成的 中/英文 同义词词典,欢迎留言告诉我~感谢

4、部署
MeiliSearch 部署很简单,增加到系统的 systemd 服务就行了。


但部署正式环境,需要注意以下几点:

生产环境必须设置密码,开发环境无强制
生产环境 Web 页面会关闭
没有远程访问和权限控制,可以通过 Nginx 实现 IP 白名单+ Cerbot 实现 HTTPS,提高安全性
可通过 curl 地址 查看服务状态
以上就是我使用 MeiliSearch 的一些心得,总体给我的感觉:

安装简单,没有复杂的配置:省心
数据写入方便,功能丰富:傻瓜
查询快
一条命令即可启动搜索服务,一行代码实现搜索功能,有了它我这个搜索小白都能分分钟实现一个搜索服务,舒服~

爱的结晶(实战)
我用 MeiliSearch 重写了 HelloGitHub 小程序的搜索功能,后端用的 FastAPI 框架。除此之外还增加了一些新功能:

热门搜索词
项目详情页
项目镜像地址提高访问速度
新的界面
HelloGitHub 小程序第二版效果图如下:


最后
如果说 MeiliSearch 缺点的话,我觉得搜索准确度还有待提高,一方面我需要学习下分词和 NLP 的一些知识,另一方面需要再熟悉下它的 API 和原理,然后再找一些词典辅助,应该能提高准确度,但心急吃不了热豆腐慢慢来吧。


本文原创,未经作者允许不可转载!
更多内容,欢迎关注作者微信公众号: HelloGitHub


0条评论
别默默看啦~登录/注册一起参与讨论吧~

暂无评论

请选择举报理由

违反法律法规

侵犯个人权益

有害网站环境

更多训练营>>

为你推荐 · 训练营(全勤打卡报名费全额返累计全额返用户133,673人)

【5月】零基础动态表情包创作训练营
距离开班仅剩12天27人已报名
【6月】人像后期案例实操训练营
距离开班仅剩39天23人已报名
【7月电脑剪映】短视频剪辑入门训练营
距离开班仅剩61天3人已报名
猜你喜欢
一文搞懂Kafka核心基础知识

2020-11-24

小虎转载君 发表

一文搞懂Kafka核心基础知识
集群多JVM分布式锁实现

2020-07-12

小虎转载君 发表

集群多JVM分布式锁实现
Spring核心源码全链路(一)

2021-04-17

小虎转载君 发表

Spring核心源码全链路(一)
实现工具自由!开源的桌面工具箱

2021-08-04

小虎转载君 发表

实现工具自由!开源的桌面工具箱
特惠
充值
7折购
今日还在继续学习的你,太棒了!
7
折扣券可用于
年费无限VIP
立 即
使 用
此活动优惠不可与其他活动叠加使用
有效期:000000
消息
登录即可查看消息记录
建议
意见
官方
客服
在线咨询客服热线

您可以与在线客服进行沟通获得帮助

工作日:9:00~22:00节假日:9:00~18:00

联系在线客服

您可以电话联系客服进行沟通获得帮助

工作日:9:30~18:30

400-862-9191
虎课
积分
免费学习90000+个教程!
配套素材、源文件一键下载!
昨日学员已学习了33,301
并提交了258份作业!
登录后立即学习!
loading
微信扫码关注即可登录
您需要同意协议才可以进行登录
登录虎课网,每天免费学课程全站 90000+ 视频会员教程 | 每日可免费学 1
为确保账户信息安全
请先进行真实姓名验证后进行充值付款
立即验证