Meilisearch v0.9:有哪些新功能?
我们刚刚发布了新版本,其开发由我们对易用性的追求所驱动。
我们意识到,由于设计选择,某些功能不易使用。整个团队围坐在一起,讨论了 API 路由及其 RESTful 特性,直到每个人都同意一项提案。我们希望在简单性和自定义之间取得良好的平衡。
那么 v0.9 中有哪些新功能?
- 模式删除!
- 包含用于尝试搜索的 Web 界面
- 新的设置处理
- 简化的自定义排名规则
- 添加了主键
- 新的内置排名规则名称
- 简化的身份验证
- 生产和开发模式
- 错误修复、语法更改和改进
无模式
无模式的想法在我们脑海中已经存在了一段时间。在开始使用时,不应要求用户指定 Meilisearch 应如何处理每个字段,而只有当他们的需求非常具体且与众不同时才需要指定。
现在,默认情况下,Meilisearch 将显示每个文档字段,使它们都可搜索,并将根据提供的文档结构推断文档的主键。
此解决方案在开始使用 Meilisearch 时减少了摩擦。
Web 界面
在之前的版本中,一旦您启动了 Meilisearch 引擎并将一些文档插入其中,流畅的体验就到此为止了。为了尝试搜索,您必须使用 curl 或 SDK 提交请求,或者创建一个连接到 Meilisearch 的前端搜索栏。
现在,由于 Meilisearch 附带了 Web 界面,您所需要做的就是打开 Web 浏览器并输入 Meilisearch 的地址以在本地访问它。这将引导您到一个带有搜索栏的网页,该搜索栏允许您在选定的索引中进行搜索。
由于生产环境需要 API 密钥进行搜索,因此 Web 界面仅在开发模式下可用。
设置
现在,在设置中可以配置任何使您的 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 将认为具有较新 release_date 的文档比旧文档更相关。
主键
Meilisearch 将尝试从您上传的文档中推断主键。此推断将搜索属性中包含字符串 id
的第一个字段。
有时,可能会找不到任何键。在这种情况下,Meilisearch 无法推断它。
由于 Meilisearch 需要主键来存储文档,如果无法推断主键,我们设置了两种替代方法来将主键传达给 Meilisearch。
- 在索引创建时给出
{ "uid": "movies", "primaryKey": "movieUniqueName" }
- 在添加文档时给出
curl -X POST 'https://127.0.0.1:7700/indexes/movies/documents?primaryKey=movieUniqueName' --data @movies.json
新的排名规则名称
在之前的版本中,排名规则名称太长,可能包含不必要的特殊字符。从现在开始,它们已被简化。以下是新的内置排名规则列表
typo
words
proximity
attribute
wordsPosition
exactness
简化的身份验证
当向 Meilisearch 添加主密钥时,会在启动时生成私钥和公钥。
公钥仅授予执行搜索和获取文档的路由的权限。
私钥授予对 Meilisearch 中除 GET /keys
路由之外的所有其他路由的访问权限。由于它返回公钥和私钥,因此只有使用主密钥才能访问此路由。
请阅读此内容以了解有关 Meilisearch 中身份验证的更多信息.
生产和开发模式
启动 Meilisearch 实例时,现在可以选择设置环境。
默认情况下,环境设置为开发模式。
在开发模式下,您无需提供主密钥。在这种情况下,无需任何 API 密钥即可访问每个路由。您还可以访问 Web 界面。
在生产模式下,如果未提供主密钥,则该实例将被视为不安全用于生产并且不会启动。
错误修复、语法更改和改进
- 删除了更新系统中的死锁
- 即使在不知道主键的情况下也可以添加设置
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 的体验。任何建议或反馈都非常受欢迎,因为它们是一个长期而雄心勃勃的项目的先决条件,该项目将建立在我们今天所做的决策之上。