
让我们来看看 Meilisearch 最新更新中的一些最显著的变化。我们将在本文中介绍主要变化,您也可以在 GitHub 上查看完整的变更日志。
新功能:多重搜索 API 端点
通过引入 /multi-search
API 端点,Meilisearch 允许您使用单个 HTTP 请求发送多个搜索查询。这将使您能够完成许多不同的事情,例如联合搜索和多选方面!
联合搜索
假设您有两个不同的数据集:“品牌”和“产品”。如果您可以同时搜索两者,并让它们在各自的索引中保持分离,那不是很方便吗?您可以通过查询多个索引来执行联合搜索,也称为多索引搜索
curl -X POST 'https://:7700/multi-search' -H 'Content-Type: application/json' --data-binary '{ "queries": [ { "indexUid": "products", "q": "Nike", "limit": 1 }, { "indexUid": "brands", "q": "Nike", "limit": 1 } ] }'
响应是一个 results
数组,其中包含每个查询索引的一个对象
{ "results": [ { "indexUid": "products", "hits": […], "query": "Nike", "processingTimeMs": 1, "limit": 1, "offset": 0, "estimatedTotalHits": 17 }, { "indexUid": "brands", "hits": […], "query": "Nike", "processingTimeMs": 0, "limit": 1, "offset": 0, "estimatedTotalHits": 7 } ] }
多选方面
多重搜索请求 API 在实现分面搜索界面中的多选方面行为时特别有用。
多选方面,也称为不相交方面,允许用户同时查看符合多个条件的项。这种类型的界面还显示每个选项可用的项目数量,即使这些项目尚未被选中。这使得快速有效地探索符合用户特定条件的项目成为可能,最终节省了时间和精力。
由于多选方面按照包含性 OR
逻辑运行,因此计算它们需要向 Meilisearch 发送多个查询。单独发送这些查询可能导致性能下降和潜在的更高托管服务成本。
使用 /multi-search
端点,您可以在单个请求中向同一索引发送多个查询,从而优化性能并降低托管成本。
在 v1.1 之前,使用 Instant Meilisearch 实现不相交方面行为是可能的,但需要向 API 发出多个请求。现在 Instant Meilisearch 使用 /multi-search
端点,这种解决方法不再必要。
新功能:_geoBoundingBox
边界框是一个完全包围某个区域的矩形框。借助新的 _geoBoundingBox
过滤器表达式,您可以搜索包含在矩形地理区域内的结果。
它需要两个参数,分别对应所需区域的右上角(东北)和左下角(西南)的坐标:_geoBoundingBox([lat, lng], [lat, lng])
curl -X POST 'https://:7700/indexes/restaurants/search' -H 'Content-type:application/json' --data-binary '{ "filter": "_geoBoundingBox([45.472735, 9.184019],[45.473711, 9.185613] )" }'
查阅我们的指南,了解如何根据地理坐标过滤结果。
新功能:引入 facetStats
在搜索查询中使用 facets
参数时,搜索结果对象现在将包含一个 facetStats
对象,该对象提供每个数字方面的最小值和最大值。任何没有数字值的方面都将被省略。
给定一个产品索引,假设您想知道最高价和最低价以实现范围滑块组件
curl -X POST 'https://:7700/indexes/products/search' -H 'Content-Type: application/json' --data-binary '{ "facets": ["price"] }'
您将获得以下响应,其中包含所有必要的信息,可供立即使用
{ "hits": […], "facetDistribution": { "price": {…} }, "facetStats": { "price": { "min": 1.99, "max": 1898.28 } } }
实验性功能:使用 Prometheus 进行系统监控
此版本引入了一个新的 /metrics
端点,它提供与 Prometheus(一个开源系统监控和警报工具包)兼容的数据。这个实验性端点为 Meilisearch 的行为和性能提供了有价值的见解。
要启用它,请在启动 Meilisearch 时使用 --experimental-enable-metrics
标志。
您计划使用此功能吗?在 GitHub 讨论中告诉我们您的经验。
改进:移除索引大小和数量限制
Meilisearch 取消了每个实例的索引数量和大小限制,因此您可以根据需要创建任意数量的索引🥳
现在唯一的限制是您的操作系统为单个进程分配的内存地址空间。在文档中了解更多信息。
其他改进
- 您现在可以在管理 API 密钥和租户令牌时,在索引名称末尾使用通配符(
*
)。例如,"medical*"
将匹配medical_records
和medical_equipement
索引 - 您可以使用添加或更新文档或添加或替换文档端点的
csvDelimiter
参数来覆盖默认的 CSV 分隔符——单个逗号 (,
) - 交错的文档添加和删除任务现在会自动批量处理,从而加快索引过程。
- 我们优秀的社区帮助我们增强了对希腊语和阿拉伯语的支持
- 语言检测现在在索引时进行,减少了搜索过程中错误的语言识别,从而提高了相关性
我们非常感谢所有参与本次发布的社区成员。我们要感谢:@akhildevelops、@AymanHamdoun、@cymruu、@FrancisMurillo、@GregoryConrad、@gregsadetsky、@james-2001、@MixusMinimax、@waveywaves 和 @ztkmkoo 为 Meilisearch 提供的帮助。
我们还要特别感谢 @choznerol、@cymruu 和 @james-2001 在 Charabia 上的工作。
v1.1 的更新到此为止!请记住查看变更日志以获取完整的发布说明。如果您有任何问题或想随时了解最新信息,您可以加入我们的 Discord 或订阅我们的时事通讯。您还可以查看我们的路线图并参与我们的产品讨论以帮助我们改进。