Meilisearch v0.9:新功能?

我们刚刚发布了新版本,其开发受到了我们对易用性渴望的驱动。
我们意识到,由于设计选择,某些功能不易使用。整个团队围坐在一起,讨论了 API 路由及其 RESTful 性,直到每个人都同意一个提案。我们希望在简单性和自定义之间取得良好的平衡。
那么 v0.9 中有哪些新功能呢?
- 模式删除!
- 包含用于试用搜索的 Web 界面
- 新的设置处理方式
- 简化的自定义排名规则
- 添加了主键
- 新的内置排名规则名称
- 简化的身份验证
- 生产和开发模式
- 错误修复、语法更改和改进
无模式
无模式的想法在我们脑海中已经存在很长时间了。在开始使用时,用户不应被要求指定 Meilisearch 应如何处理每个字段,而只有当他们的需求确实很具体和不寻常时才需要这样做。
现在,默认情况下,Meilisearch 将显示每个文档字段,使它们都可搜索,并将根据提供的文档结构推断文档的主键。
此解决方案在开始使用 Meilisearch 时造成的摩擦要小得多。
Web 界面
在以前的版本中,一旦您启动了 Meilisearch 引擎并在其中插入了一些文档,流畅的体验就到此为止了。为了试用搜索,您必须使用 curl 或 SDK 提交请求,或者创建一个连接到 Meilisearch 的前端搜索栏。
现在,Web 界面已随 Meilisearch 一起发布,您只需打开 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 'http://localhost: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 的体验。任何建议或反馈都非常欢迎,因为这些都是建立在我们今天所做决策之上的长期而雄心勃勃的项目的前提。