想要更好地控制您的搜索设置?了解我们的灵活的基础设施定价

回到主页Meilisearch 的标志
返回文章

v0.21 中的新功能

了解 MeiliSearch v0.21 中的一些重大变化

2021年8月23日阅读4分钟
Gui Machiavelli
Gui MachiavelliMeilisearch 团队null
What’s new in v0.21
分享文章

今天标志着 Meilisearch v0.21 的发布,这是我们自 2021 年 3 月以来的第一个新版本。正如您可能预料的那样,这个版本对我们的搜索引擎进行了许多或大或小的更改。您可以查看我们详尽的更新日志,其中列出了所有重大更改,并在此处下载二进制文件,但在这篇文章中,我们希望更详细地介绍一些最重要的更新。

搜索性能

首先,我们能给您的最好消息之一是:v0.21 是迄今为止最快的 Meilisearch 版本。有多快?我们使用 1GB 数据集和 1.15 亿文档进行的测试表明,复杂查询返回结果的速度比 v0.20 快十倍;过滤这些结果(以前是一个缓慢的操作)最多只需 50 毫秒。

重构

Clémentine 已经写过我们为什么要选择重构核心引擎的基本部分,但如果您错过了:对我们来说,保持代码对外部贡献者易于阅读,以及在不负面影响性能的情况下添加新功能变得越来越困难。

我们为这几个月所取得的成就感到非常自豪,不仅因为我们成功地极大地提高了 Meilisearch 的性能,还因为我们知道我们的搜索引擎拥有了新的、坚如磐石的基础。

分面和过滤

v0.21 中一些最大的可见(和破坏性)更改涉及分面和过滤。

首先,搜索参数 filtersfacetFilters 已被 filter 替换。这个新参数允许您根据文档属性(其值可以是数字或字符串)来细化搜索结果。

$ curl 'https://:7700/indexes/movies/search' 
--data '{ "q": "thriller", "filter": ["genres = Horror", "genres = Mystery"]}'

在这个示例中,我们创建一个过滤器,只返回同时被归类为恐怖和神秘的电影。

要将属性与 filter 搜索参数一起使用,您必须首先将其添加到新的 filterableAttributes 索引设置filterableAttributes 的工作原理与 attributesForFaceting 索引设置完全相同,并将其取代。

$ curl 
  -X POST 'https://:7700/indexes/movies/settings' 
  --data '{
      "filterableAttributes": [
          "director",
          "genres"
      ]
  }'

Meilisearch 不再区分分面和过滤器:您可以使用新的 filter 搜索参数和 filterableAttributes 索引设置来创建分面搜索界面

Meilisearch v0.21 支持短语搜索。如果您将一个或多个搜索词用双引号括起来(例如,“非洲裔美国诗人”“约翰·沃特斯”),Meilisearch 将只返回包含这些词与书写方式和顺序完全相同的文档。短语搜索是使查询更精确的好方法,当您知道搜索只应得到一个结果时,例如在查找书籍时使用 ISBN 号,它会派上用场。

$ curl 'https://:7700/indexes/movies/search' 
  --data '{ "q": ""John" Waters" }'

网页界面

如果您不知道,Meilisearch 在您以开发模式启动实例时会自动创建一个网页界面,以便您可以立即测试我们的搜索引擎。我们已经更新了这个界面,使其更易于使用(并且更美观)!

新的遥测页面和更简单的分析设置

默认情况下,Meilisearch 从所有使用我们搜索引擎的实例收集匿名数据。我们已经让禁用此行为变得更容易,并且在我们的文档中添加了一个新页面,详细解释了我们收集的数据以及如何使用这些数据。隐私对我们来说是一个重要问题,因此请随时分享您的任何评论、担忧或建议。

$ ./meilisearch --no-analytics=true

高亮数组和对象字段中的匹配项

Meilisearch v0.20 允许您高亮字符串字段中匹配的搜索词,以便用户可以确切看到在文档中找到该词的位置。在 v0.21 中,我们扩展了此功能,使其适用于字符串数组和嵌套对象。与之前一样,您可以在每个返回文档的 _formatted 对象中找到高亮显示的匹配项。

$ curl 'https://:7700/indexes/movies/search' 
  --data '{ 
		"q": "adventure", 
    	"attributesToHighlight": ["title", "genres"] 
	}'
{
  "id": "50393",
  "title": "The Adventures of Huck Finn",
  "overview": "Climb aboard for an extraordinary version of Mark Twain's sweeping adventure when Walt Disney presents The Adventures of Huck Finn, starring Elijah Wood.",
  "release_date": 733712400,
  "genres": ["Adventure","Family"]
  "_formatted": {
      "id": "50393",
      "title": "The <em>Adventures</em> of Huck Finn",
      "overview": "Climb aboard for an extraordinary version of Mark Twain's sweeping adventure when Walt Disney presents The Adventures of Huck Finn, starring Elijah Wood.",
      "release_date": 733712400,
      "genres": ["<em>Adventure</em>","Family"]
  }
}

标题和类型高亮匹配项可在 _formatted 中找到。

其他更改

  • 您可能会注意到索引器的一些轻微性能改进:这是一个正在进行中的工作,我们渴望得到您的反馈。
  • wordsPosition 排名规则已合并到 attribute
  • max-mdb-size 已更名为 [max-index-size](https://docs.meilisearch.com/reference/features/configuration.html#max-index-size)
  • 现在可以使用人类可读的单位(如 KbGb)指定 [max-index-size](https://docs.meilisearch.com/reference/features/configuration.html#max-index-size)[http-payload-limit-size](https://docs.meilisearch.com/reference/features/configuration.html#payload-limit-size)
  • 我们已移除每个实例200个索引的限制

Bug 修复

  • Windows 实例启动时不再立即占用最大索引大小
  • 排名规则 Words 现在按预期工作
  • Dumps 现在可以正确导出所有文档字段,无论它们是否在 displayedAttributes 中。

贡献者

这一切都归功于我们的社区:我们真诚地感谢您的慷慨。因为有您,Meilisearch 成为了一个更好的搜索引擎。

我们特别感谢 @sanders41@bb:您的错误报告和反馈非常有帮助!

最后,非常感谢 @shekhirin 在新搜索引擎实现方面提供的所有帮助。


本次发布就到这里!要全面了解所有更改,包括重大更改和非重大更改,您可以查看我们的更新日志

Meilisearch 1.16

Meilisearch 1.16

Meilisearch 1.16 引入了多模态嵌入和新的 API,用于在实例之间传输数据。

Laurent Cazanove
Laurent Cazanove2025年8月5日
Meilisearch 1.15

Meilisearch 1.15

Meilisearch 1.15 引入了新的拼写容错设置、字符串过滤器比较运算符,并改进了对中文的支持。

Carolina Ferreira
Carolina Ferreira2025年6月10日
Meilisearch 1.14

Meilisearch 1.14

Meilisearch 1.14 引入了新的实验性功能,包括复合嵌入器和嵌入缓存以提高性能。它还增加了核心功能,例如细粒度可过滤属性和按 ID 批量检索文档。

Carolina Ferreira
Carolina Ferreira2025年4月14日
© . This site is unofficial and not affiliated with Meilisearch.