Skip to content

大家好,我是农村程序员,独立开发者,行业观察员,网络小说家,前端之虎陈随易。

我会在这里分享关于 编程技术独立开发行业资讯故事小说思考感悟 等内容。

如果本文能给你提供启发或帮助,欢迎动动小手指,一键三连 (点赞评论转发),给我一些支持和鼓励,谢谢。


Meilisearch 是一个全文检索引擎,适合服务器配置和资源有限,但也需要全文检索的开发者和项目。

Meilisearch 是什么?

简单来说,Meilisearch 是一个开源的、轻量级并且速度极快的搜索引擎。

你可以把它看作是一个专门为 搜索 这件事而生的数据库。它的主要任务就是接收你提供的数据 (比如商品信息、文章列表、用户信息等),然后让你能够用非常快的速度从中找到你需要的内容。

它有什么特别之处?(描述)

Meilisearch 之所以受到很多开发者喜爱,主要有以下几个特点:

  1. 快!真的快!:这是 Meilisearch 最核心的优势。它被设计用来提供 “即时搜索” 体验,用户输入关键词时几乎没有延迟就能看到结果。
  2. 简单易用:相比于一些功能庞大、配置复杂的搜索引擎 (比如 Elasticsearch),Meilisearch 的安装、部署和使用都非常简单。你不需要成为搜索专家,也能很快上手,让你的应用拥有强大的搜索功能。
  3. 开箱即用的高相关性:Meilisearch 内置了一套智能的排序规则。它能自动处理拼写错误 (比如你搜 “iphnoe”,它也能找到 “iphone”)、识别前缀 (输入 “app” 就能找到 “apple”),并根据词语的重要性、匹配度等因素,优先展示最相关的结果。你基本不用怎么配置,就能得到不错的搜索效果。
  4. 灵活定制:虽然开箱即用很方便,但 Meilisearch 也允许你根据自己的需求调整搜索行为,比如自定义排序规则、设置过滤条件、实现分面搜索 (比如电商网站常见的按品牌、价格区间筛选) 等。
  5. 开发者友好:它提供了清晰的 REST API,并且有各种主流编程语言的官方和社区 SDK (软件开发工具包),方便你把它集成到自己的网站或应用中。
  6. 轻量级:它对资源的消耗相对较低,部署起来比较方便。

Meilisearch vs. 其他选择

  • 对比数据库自带的 LIKE 查询:如果你用过 SQL 数据库,可能知道用 LIKE '%keyword%' 来做模糊搜索。这种方式在数据量小的时候还行,一旦数据多了,速度会非常慢,而且搜索结果的相关性也很难控制。Meilisearch 在速度和相关性上都远远胜出。
  • 对比 Elasticsearch (ES):ES 是一个功能非常强大的搜索引擎,广泛用于日志分析、大数据检索等复杂场景。但它的学习曲线比较陡峭,配置和维护也相对复杂。对于很多只需要在网站或应用中添加快速、用户友好的搜索功能的场景,Meilisearch 提供了一个更简单、更轻量的选择。可以理解为,如果 ES 是瑞士军刀,功能全面但稍重;那 Meilisearch 就是一把锋利的匕首,专注于把 “搜索” 这件事做到极致的简单和快速。

Meilisearch 能用在哪些地方?

Meilisearch 非常适合以下场景:

  • 电商网站:快速搜索商品,提供筛选和排序。
  • 文档/知识库:快速查找文档、文章、帮助页面。
  • 应用内搜索:搜索用户、帖子、笔记、订单等任何结构化数据。
  • 网站全局搜索:为你的网站或博客添加一个高效的站内搜索框。
  • 需要 “即时搜索” 体验的任何地方。

Meilisearch 的作用是什么?

Meilisearch 的核心作用是:

  1. 提升用户体验:快速、准确、容错性强的搜索能显著提升用户在你网站或应用上的满意度和留存率。
  2. 降低开发复杂度:让你不必从零开始构建复杂的搜索逻辑,也不必深入研究复杂的搜索算法,就能为你的应用赋予强大的搜索能力。
  3. 赋能数据查找:让用户能够更容易、更快速地从大量信息中找到他们需要的内容。

Meilisearch v1.14.0 更新摘要

此版本引入了两个重要的实验性功能:向量存储和分数详情,并包含多项性能改进和错误修复。

✨ 新功能 (实验性)

  • 向量存储 (Vector Store):
    • 允许存储和搜索向量 (Embeddings)。
    • 新增 embeddersprompt 索引设置。
    • 新增 /indexes/:index_uid/embeddings API 端点用于添加向量。
    • 新增 /indexes/:index_uid/settings/embedders/indexes/:index_uid/settings/prompt API 端点用于配置嵌入器和提示。
    • 新增 vector 搜索参数用于纯向量搜索。
    • 新增 hybrid 搜索参数用于混合 (关键字 + 向量) 搜索。
  • 分数详情 (Score Details):
    • 新增 showRankingScoreDetails 搜索参数 (设置为 true)。
    • 在搜索结果的 _rankingScoreDetails 字段中返回每个文档详细的排名分数计算信息。

🚀 性能改进

  • 索引性能:通过优化 Roaring Bitmaps 的内存使用,显著提高了大型文档的索引速度。
  • 内存使用:降低了索引过程中的内存消耗。
  • 搜索性能:通过优化 Roaring Bitmaps 的交集计算,提升了包含大量候选结果的搜索查询性能。
  • 排名分数:提高了排名分数计算的精确度。

💅 其他改进

  • /features 端点:添加了 vectorStorescoreDetails/features API 端点,以表明这些实验性功能是否启用。
  • 错误信息:改进了无效 filtersort 语法的错误提示信息。

🐞 Bug 修复

  • 修复了索引非常大的文档 (接近 4GB) 时可能发生的崩溃问题。
  • 修复了在大量文档上使用 sort 时可能发生的崩溃问题。
  • 修复了同时使用 sortdistinct 时可能返回不正确结果的问题。
  • 修复了 attributesToSearchOn 设置在某些情况下未正确应用的问题。
  • 修复了 attributesToRetrievedistinct 结合使用时无法正常工作的问题。
  • 修复了在索引过程中发生崩溃后可能导致索引损坏的问题。

注意:vectorStorescoreDetails 是实验性功能,其 API 和行为在未来版本中可能会发生变化。

总结,Meilisearch 是一个现代化的、专注于提供极致速度和易用性的开源搜索引擎。如果你想为你的网站或应用添加一个高性能、用户体验好的搜索功能,又不想陷入过于复杂的配置和维护中,那么 Meilisearch 绝对是一个值得考虑的优秀选择。

何以解忧,唯有代码。不忘初心,方得始终。