Meilisearch v0.9:有什么新功能?

我们刚刚发布了新版本,其开发宗旨是追求易用性。
我们发现由于设计选择,一些功能不够易用。整个团队围坐一堂,讨论了 API 路由及其 RESTful 特性,直到大家就一个提案达成一致。我们希望在简洁性和定制性之间取得良好的平衡。
那么 v0.9 有哪些新功能?
- 删除 Schema!
- 内置网页界面,可供试用搜索功能
- 新的设置处理方式
- 简化自定义排名规则
- 添加主键
- 新的内置排名规则名称
- 简化身份验证
- 生产模式和开发模式
- 错误修复、语法更改和改进
无模式
无模式(schemaless)的想法在我们脑海中盘旋了很久。在入门时,用户不应被要求指定 Meilisearch 应如何处理每个字段,而只有当他们的需求非常特殊且不寻常时才需要这样做。
现在,默认情况下,Meilisearch 将显示所有文档字段,使它们都可搜索,并将根据提供的文档结构推断文档的主键。
此解决方案在使用 Meilisearch 时可大大减少摩擦。
网页界面
在以前的版本中,一旦您启动了 Meilisearch 引擎并向其中插入了一些文档,顺畅的体验就到此为止了。为了试用搜索功能,您必须使用 curl 或 SDK 提交请求,或者创建一个连接到 Meilisearch 的前端搜索栏。
现在,Meilisearch 附带了一个网页界面,您只需打开网络浏览器并输入 Meilisearch 的地址即可在本地访问它。这将引导您进入一个带有搜索栏的网页,您可以在其中搜索选定的索引。
由于生产环境需要 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 'https://: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 的体验。任何建议或反馈都非常受欢迎,因为这些是我们基于今天所做的决定来构建长期雄心勃勃项目的前提。