
今天标志着 Meilisearch v0.21 的发布,这是我们自 2021 年 3 月以来的第一个新版本。正如您可能预料的那样,这个版本对我们的搜索引擎进行了许多或大或小的更改。您可以查看我们详尽的更新日志,其中列出了所有重大更改,并在此处下载二进制文件,但在这篇文章中,我们希望更详细地介绍一些最重要的更新。
搜索性能
首先,我们能给您的最好消息之一是:v0.21 是迄今为止最快的 Meilisearch 版本。有多快?我们使用 1GB 数据集和 1.15 亿文档进行的测试表明,复杂查询返回结果的速度比 v0.20 快十倍;过滤这些结果(以前是一个缓慢的操作)最多只需 50 毫秒。
重构
Clémentine 已经写过我们为什么要选择重构核心引擎的基本部分,但如果您错过了:对我们来说,保持代码对外部贡献者易于阅读,以及在不负面影响性能的情况下添加新功能变得越来越困难。
我们为这几个月所取得的成就感到非常自豪,不仅因为我们成功地极大地提高了 Meilisearch 的性能,还因为我们知道我们的搜索引擎拥有了新的、坚如磐石的基础。
分面和过滤
v0.21 中一些最大的可见(和破坏性)更改涉及分面和过滤。
首先,搜索参数 filters
和 facetFilters
已被 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)
- 现在可以使用人类可读的单位(如
Kb
或Gb
)指定[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 修复
贡献者
这一切都归功于我们的社区:我们真诚地感谢您的慷慨。因为有您,Meilisearch 成为了一个更好的搜索引擎。
我们特别感谢 @sanders41 和 @bb:您的错误报告和反馈非常有帮助!
最后,非常感谢 @shekhirin 在新搜索引擎实现方面提供的所有帮助。
本次发布就到这里!要全面了解所有更改,包括重大更改和非重大更改,您可以查看我们的更新日志。