首页 AI搜索引擎 Meilisearch:5.9 万 Star 的 Rust 搜索引擎,50 毫秒出结果,关键词和语义一起搜

Meilisearch:5.9 万 Star 的 Rust 搜索引擎,50 毫秒出结果,关键词和语义一起搜

📅 2026/9/22 👁 阅读 3 🔗 工具访问 0 次 📂 AI搜索引擎
Meilisearch:5.9 万 Star 的 Rust 搜索引擎,50 毫秒出结果,关键词和语义一起搜

工具地址

https://github.com/meilisearch/meilisearch

🚀 访问工具

做过后台的人应该都写过这种搜索:数据库里 LIKE '%关键词%' 一拼,能搜就算交付了。然后用户开始抱怨:打错一个字就搜不到,搜"手机"搜不出"电话",按价格筛选得分三个接口自己拼,排序还得另写一套逻辑。需求慢慢堆,最后搜索模块变成整个项目里最没人敢动的那块。

Meilisearch 就是专门来吃掉这块的。一个 Rust 编译出来的二进制,起一个 HTTP 服务,把拼写容错、筛选、分面、排序、语义检索这些事全做进引擎里,业务代码只负责往接口扔 JSON。

是什么

meilisearch/meilisearch,Rust 写的搜索引擎,5.9 万 Star、2712 Fork,当前版本 v1.54.0(9 月 21 日发布),9 月 21 日仓库仍有提交,待处理 Issue 242 个、待合并 PR 67 个。项目 2018 年 4 月建仓,一直在同一个方向上加东西,没有中途转向。

用法很简单:下载二进制或者 docker run,起一个服务;往 /indexes/{index}/documents 塞 JSON 文档,配一下哪些字段可搜、可筛、可排;然后前端调 POST /indexes/{index}/search。SDK 覆盖了主流语言和框架,从 React 到 Go、Rust、PHP 都有。

授权分两个版本,这条线得先弄清楚。社区版是完全开源的 MIT 协议,核心的全文、语义、混合检索全在里面,商用免费;企业版是商业许可,多出来的是分片、S3 流式快照这类规模化的能力,没有商业协议不允许上生产。个人项目和中小团队基本碰不到那条线,但选型时值得先确认一下。

Meilisearch 项目仓库首页

核心优势

输入即出结果,目标是 50 毫秒以内。官方 README 里给的是"找到并展示结果不超过 50 毫秒"。这个指标不是性能炫耀,它改变的是产品形态:搜索框可以边打边出结果,用户不用按回车、不用等加载、也不用想清楚关键词再搜。

拼写容错是开箱可用的。少打一个字母、顺序打乱、中英混输,都能给出合理结果。这件事在用户侧的价值被严重低估——搜索框里搜出空白页,用户不会觉得是打错了字,只会觉得这个站没这个内容,然后走掉。

筛选、分面、排序都是引擎自带。按价格、日期、地区、评分任意组合过滤,分面计数("这个分类下有 37 个结果")一次返回,不用自己再写一条聚合查询;排序支持数值、日期,也支持自定义规则。官方还挂了一个电商示例站,能直接点着玩,比自己脑补需求快。

中文是专门优化过的,不是"能跑"级别。README 里点名支持的语言就有中文、日文、希伯来文和拉丁语系。它在这几门语言上都做了分词和相关性上的专门处理,这一点比很多"只对英文友好"的引擎实际得多。

全文和语义可以一起搜。混合检索把关键词匹配和向量检索的分数按你设的权重融起来。纯语义检索在"搜一个精确型号"这种场景上会输,纯关键词在"搜一个意思"的场景上会输,混合是这条路目前的共识解法。代价是语义那部分要接一个外部的 embedding 服务,官方支持 OpenAI 之类,也能自己搭。

权限和多租户做得很细。API 密钥可以精确到"只能读某个索引的某几个字段",多租户用 tenant token 按用户签发临时凭证来做隔离。做 SaaS 的人会知道这有多省事——不用在应用层再糊一层过滤逻辑。

它正在往 AI 检索那边挪。现在带一个问答接口,一次调用就能跑完"检索文档、把结果喂给模型、生成一句话答案"的完整流程,用户问的是问题、拿到的也是答案,而不是一串链接。同时原生支持 MCP 和主流编排框架,能被 Agent 直接当工具调。官方还做了个示范:一亿张 Flickr 图片的语义检索。

想让搜索结果听话,它给的口子不少。文档关系功能允许跨索引定义关联,然后用 _foreign 语法直接在关联索引上过滤——比如"找出所有主演年龄小于 40 岁的电影",不用把数据反范式化。动态搜索规则则可以把某个文档钉在指定位置,做季节性促销或者故障期挂公告很实用;条件不满足它就完全不生效,不污染正常排序。

Meilisearch 官方网站首屏

怎么用

最快的上手方式是 Docker:docker run -it -p 7700:7700 -v $(pwd)/meili_data:/meili_data getmeili/meilisearch:v1.54,起来之后 http://localhost:7700 有一个自带的可视化界面,能直接建索引、加文档、点搜索。想先看效果,官方几个示例站都是真的在跑引擎,不用注册。

正式接进项目三步:建索引;用 POST /indexes/{index}/documents 把数据灌进去,引擎会异步建索引;然后用 PATCH /indexes/{index}/settings 配好可搜字段、可筛字段、可排字段和同义词。这里有个经验:可搜字段一定要显式指定,让它默认搜全部字段很省事,但也把相关性拖垮了——把 id、内部编码这类字段排除掉,效果立刻不一样。

想开语义检索,就在 settings 里配一个 embedder。走外部 API 最省事,但要接受查询文本会发出去;在意数据流向就在本地起一个 embedding 服务。

不是没有槽点

它不是数据库,别当业务真相存。搜索引擎的正确定位是"数据库的一个可检索副本":数据从你的库同步过来,引擎挂了可以从库重建。拿它当主存储用,你会同时失去事务和多年积累的关系型能力。它本身也带持久化,但那不等于该这么用。

中文想调好还得花点功夫。它对中文的支持是"有专门优化",不是"零配置就完美"。同义词表、可搜字段的划分、停用词这些还是得按自己的语料过一遍。指望灌进去就达到商业搜索的效果,会失望。

语义检索的路要自己掏钱。混合检索里的向量那一路,需要一层 embedding 服务。用商业 API 是按量付费,自建则要占资源、要维护。只看全文检索的话,这部分成本是零——所以先想清楚到底需不需要语义。

资源规划得先做。索引规模上去之后,内存和磁盘都要跟着调,官方文档里有一页专门讲自托管的资源要求,上生产前对着自己的数据量看一眼,比事后扩机器便宜。

小版本也可能带行为变化。它的更新节奏很快,而且确实有过破坏性改动,比如嵌入模型的调用超时现在跟着索引里的 searchCutOffMs 走,而不是固定值。如果你升级后发现语义结果变少甚至报 500,要调的就是这个设置。另外它历史上修过认证绕过类的安全问题(v1.43.1),当时官方建议"允许第三方配置实例"的自托管用户尽快升级。升级前读一遍 changelog 是必要动作,不是可选项。

遥测默认是开的。收集的是匿名使用数据,可以关,但默认开启这件事,在意合规的团队得提前处理。

跟同类怎么比

对 Elasticsearch / OpenSearch。那套是产业标准,能干的活多得不是一点半点——复杂聚合、日志分析、海量分片、生态成熟度都领先。代价是重:集群、JVM 调优、查询 DSL 学习曲线、运维门槛,一个搜索框的需求用整套 ELK 去扛,通常是不划算的。Meilisearch 换来的就是"一个二进制、五分钟起来、相关性默认就挺好"。要做日志分析和大规模聚合,还是那边合适;要做产品里的搜索框,这边更对路。

对 Algolia 这类托管搜索服务。Algolia 的体验很好、开箱即用、几乎不用运维,问题在价格随查询量线性上涨,数据也得托付出去。Meilisearch 社区版能自己部署,成本主要落在机器上,量大了会明显便宜,而且数据不出自己的网络。反过来说,不想养服务器、团队也没有运维余量的,托管服务依然更省心。

对 Typesense 这类同类开源引擎。定位几乎重合,都是"轻量、快、开箱可用"。差别更多在细节和生态:Meilisearch 的混合检索、问答接口、MCP 支持这些 AI 方向的投入走得早一些,中文、日文的专门优化也写在明面上。真到选型,建议拿自己的真实数据和真实查询词各跑一遍,比看参数有用。

对 Postgres 自带的全文检索。如果数据本来就在 Postgres 里、查询量也不大,用自带的全文检索最省事——零额外组件、能事务、能联表。它撑不住的通常就是两三处:中文分词(要装扩展)、相关性和容错、以及边打字边出结果的延迟。数据量小、要求不高就别引新组件;一旦搜索变成产品的核心体验,专用引擎的价值就出来了。

一句话:你要给产品加一个"好用"的搜索框,而且不想为此养一套集群,Meilisearch 是目前门槛最低的选择;你要做的是海量日志分析和复杂聚合,那是另一个赛道。

项目地址:https://github.com/meilisearch/meilisearch
官网与文档:https://www.meilisearch.com/

标签:#Meilisearch #搜索引擎 #Rust #开源工具 #混合检索 #站内搜索

你现在项目里的那个搜索框,是用户真的在用,还是大家试过一次就回去用筛选菜单了?

💬 评论区 (0 条评论)

暂无评论,快来发表第一条评论吧!

📤 分享这篇文章

📌 相关推荐

微信扫码分享

打开微信扫一扫