回到主页Meilisearch 标志
返回文章
2023年3月20日

Meilisearch v0.9: 有哪些新功能?

Meilisearch v0.9: What’s new?

我们刚刚发布了新版本,其开发宗旨是追求易用性。

我们意识到,由于设计选择,一些功能不够易用。整个团队围坐在一起,就 API 路由及其 RESTful 特性进行了讨论,直到所有人都同意一个提议。我们希望在简便性和可定制性之间取得良好的平衡。

那么,v0.9 有哪些新功能呢?

  • 模式删除!
  • 内置网页界面,供您试用搜索功能
  • 新的设置处理方式
  • 简化的自定义排序规则
  • 添加了主键
  • 新的内置排序规则名称
  • 简化的身份验证
  • 生产和开发模式
  • 错误修复、语法更改和改进

无模式

无模式的想法在我们脑海中酝酿已久。刚开始使用时,用户不应该被要求指定 Meilisearch 如何处理每个字段,除非他们的需求非常特殊或超出常规。
现在,Meilisearch 默认会显示每个文档的字段,使它们都可搜索,并会根据提供的文档结构推断文档的主键。
这个解决方案大大减少了开始使用 Meilisearch 时的摩擦。

网页界面

在以前的版本中,一旦您启动了 Meilisearch 引擎并插入了一些文档,顺畅的体验就止步于此了。为了试用搜索功能,您不得不使用 curl 或 SDK 提交请求,或者创建一个连接到 Meilisearch 的前端搜索栏。

现在 Meilisearch 自带了网页界面,您只需打开网页浏览器并输入 Meilisearch 的地址即可本地访问。这将引导您到一个带有搜索栏的网页,允许您在选定的索引中进行搜索。

movies_web_2-1

由于生产环境需要 API 密钥才能进行搜索,因此网页界面仅在开发模式下可用。

设置

现在,任何非 Meilisearch 实例正常运行所必需的配置都可以在设置中完成。

每个设置都有一个对应的路由,因此可以只更新特定设置。全局设置路由允许您提交描述自定义内容的配置文件,这将有助于基于相同设置创建类似的 Meilisearch 实例。

示例

{
  "rankingRules": [
      "typo",
      "words",
      "proximity",
      "attribute",
      "wordsPosition",
      "exactness",
      "desc(release_date)"
  ],
  "distinctAttribute": null,
  "searchableAttributes": [
      "title",
      "description",
      "uid"
  ],
  "displayedAttributes": [
      "title",
      "description",
      "release_date",
      "rank",
      "poster"
  ],
  "stopWords": null,
  "synonyms": {
      "wolverine": ["xmen", "logan"],
      "logan": ["wolverine", "xmen"]
  },
  "indexNewFields": false
}

所有设置都可以在这里找到

简化的自定义排序规则

在以前的版本中,创建自己的规则可能会令人困惑。我们简化了这项任务!您现在只需在排序规则列表中,为您字段中的一个字段添加一个升序 (asc()) 或降序 (desc()) 规则即可。

 "rankingRules": [
      "typo",
      "words",
      "proximity",
      "attribute",
      "wordsPosition",
      "exactness",
      "desc(release_date)"
  ]

如果您按照此示例更新排序规则,您会注意到您的更改已立即被 Meilisearch 采纳。这意味着一旦所有其他规则都已应用,Meilisearch 将认为发布日期更近的文档比旧文档更相关。

主键

Meilisearch 将尝试从您上传的文档中推断主键。此推断将搜索其属性中包含字符串 id 的第一个字段。
有时,可能找不到任何键。在这种情况下,Meilisearch 无法推断。

由于 Meilisearch 需要主键来存储文档,如果无法推断出主键,我们设置了两种替代方式来将主键告知 Meilisearch。

  • 在索引创建时提供
{
  "uid": "movies",
  "primaryKey": "movieUniqueName"
}
  • 在文档添加时提供
curl -X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=movieUniqueName' --data @movies.json

新的排序规则名称

在以前的版本中,排序规则名称过长且可能包含不必要的特殊字符。从现在起,它们已被简化。以下是新的内置排序规则列表:

  • typo
  • words
  • proximity
  • attribute
  • wordsPosition
  • exactness

请遵循本指南以了解每个排序规则的作用.

简化的身份验证

向 Meilisearch 添加主密钥时,启动时会生成一个私钥和一个公钥。
公钥只授予执行搜索和获取文档的路由权限。
私钥授予对 Meilisearch 中所有其他路由的访问权限,除了 GET /keys 路由。由于此路由会返回公钥和私钥,因此只能使用主密钥访问。

阅读此文以了解更多关于 Meilisearch 身份验证的信息.

生产和开发模式

启动 Meilisearch 实例时,现在可以选择设置环境。
默认情况下,环境设置为开发模式。

在开发模式下,您无需提供主密钥。在这种情况下,所有路由都可以访问,无需任何 API 密钥。您还可以访问网页界面

在生产模式下,如果未提供主密钥,实例将被视为不适合生产环境,并且不会启动。

错误修复、语法更改和改进

  • 移除了更新系统中的死锁
  • 即使不知道主键,也可以添加设置
  • POST /documents/delete 已更改为 POST /documents/delete-batch
  • 加快重新索引系统
  • 在搜索过程中未提示高亮时,返回的文档中将不会有 _highlighted 字段
  • 从搜索查询参数中移除了 searchableAttributes
  • 现在获取索引统计信息的路由是:GET /indexes/:index_uid/stats,而不是 GET /stats/:index_uid
  • 文档 ID 只能包含以下字符:A-Z a-z 0-9-_

我们对路由设计进行的一些调整是为了发布一个工作版本而采取的临时选择。例如,/key 路由虽然功能正常,但过于简单,未能满足开发者的常见需求。我们正在思考如何更好地处理它,并欢迎任何建议!

这个版本花了我们大约三个月的时间完成,考虑到 v0.8.5 尚未正式发布但已添加到 v0.9 版本中。我们在流程组织方面做了大量工作,以确保所有内容能同时准备就绪:Meilisearch 核心、文档和 SDK。

我们对这些最新更改将如何改善用户使用 Meilisearch 的体验感到非常兴奋。这次发布是我们和贡献者之间大量讨论的结果。我们渴望听到您使用 Meilisearch 的体验。任何建议或反馈都非常受欢迎,因为这些是我们今天所做决策的基础,一个长期而雄心勃勃的项目将在此基础上构建。

Meilisearch 1.14

Meilisearch 1.14

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

Carolina Ferreira
Carolina Ferreira2025年4月14日
Meilisearch AI launch week recap

Meilisearch AI 发布周回顾

Meilisearch AI 发布回顾:利用 AI 和个性化功能革新搜索

Maya Shin
Maya Shin2025年3月28日
Introducing Meilisearch's next-generation indexer: 4x faster updates, 30% less storage

Meilisearch 新一代索引器:更新速度快4倍,存储空间减少30%

索引器 2024 版通过并行处理、优化的 RAM 使用和增强的可观察性,彻底改变了搜索性能。查看我们最新版本中的新功能。

Louis Dureuil
Louis Dureuil2025年2月26日