v1.4 版本有哪些新功能?
Meilisearch v1.4 引入了配置自定义文本分隔符和用户定义字典的功能。

让我们来看看 Meilisearch 最新更新中的一些最重要更改。我们将在本文中介绍主要更改,但您也可以在 GitHub 上查看完整更新日志。
v1.4 现在已在 Meilisearch Cloud 上提供。一键升级您的 Meilisearch 实例,无需停机。
新功能:自定义文本分隔符
为了使字符串数据可搜索,Meilisearch 依赖于分隔符,因为它们用于将字符串分成标记或单词。分隔符的示例包括空格、句点或数字符号 (#)。它们在帮助 Meilisearch 有效地分割文本和提高搜索相关性方面起着至关重要的作用。
Meilisearch 附带预定义的分隔符列表。但是,这些分隔符并不适合所有用例。例如,在主题标签搜索中,数字符号不应被视作分隔符,而应被视为单词的一部分。
从 v1.4 开始,Meilisearch 允许您自定义分隔符列表以满足您的特定需求。
使用 SDK 或 API
向分隔符列表添加字符
要将字符包含在分隔符列表中,请更新索引的分隔符标记设置
client.index('myIndex').updateSeparatorTokens(['§'])
此请求将节符号字符 (`§`) 的编码版本添加到分隔符标记列表中。
从分隔符列表中删除字符
要从分隔符列表中删除一个或多个字符,请更新索引的非分隔符标记设置
client.index('myIndex').updateNonSeparatorTokens(['@', '#', '&'])
使用 Meilisearch Cloud
在 Meilisearch Cloud 上,您可以从索引的设置中配置分隔符标记。这两个字段都接受 JSON 格式。要包含分隔符,请将它们添加到“separators”字段。要排除某些字符作为分隔符,请将它们列在“non-separators”下。
新功能:自定义字典
现在,您可以添加自定义单词字典来改进 Meilisearch 对特定单词的分割。当处理特定领域的术语(如“Node.js”)或专有名词(如“E. E. Cummings”)时,这尤其有用。
要将单词添加到字典中,请更新索引的字典设置
client.index('myIndex').updateDictionary(['e. e.', 'e.e.', 'e e'])
在 Meilisearch Cloud 上,您可以通过在索引设置中提供 JSON 数组来配置自定义字典。您也可以上传 JSON 文件作为字典。
将自定义字典与停用词和同义词一起使用
自定义字典的引入是对现有功能(如停用词和同义词)的强大补充。它们协同作用,以提高搜索结果的相关性。
让我们考虑一个文学数据库,其中作者的姓名可能以各种形式或缩写形式出现。这会导致搜索结果分散,使用户难以找到特定作者的作品。例如,考虑一下人们可能搜索 E. E. Cummings 作品的不同方式。使用自定义字典功能以及同义词可以标准化这些姓名变体,从而提高搜索结果的相关性。
将同义词和自定义字典结合使用,以下是解决此场景的索引设置示例
{ "dictionary": ["E. E.", "E.E.", "E E"], "synonyms": { "E. E.": [ "E.E.", "E E", "Edward Estlin"], "E.E.": ["E. E.", "E E", "Edward Estlin"], "E E": ["E. E.", "E.E.", "Edward Estlin"], "Edward Estlin": ["E. E.", "E.E.", "E E"] }
突破性错误修复:改进了反斜杠的过滤
在 v1.4 中,我们解决了用户在使用 `filter` 搜索参数表达式末尾的反斜杠 (\\) 时遇到的长期存在的错误。
让我们考虑以下文档
[ { "id": 1, "path": "my\test\path" }, { "id": 2, "path": "my\test\path\" } ]
注意:示例中的双反斜杠用于 JSON 转义。
在 v1.4.0 之前,尝试使用过滤器 path = "my\\test\\path\\"
或 path = "my\\test\\path\\\"
过滤第二个文档会导致错误。
现在,您可以使用任何带有反斜杠的过滤器表达式。只需确保转义过滤器中每个 \
字符。
使用我们的示例,要成功过滤第二个文档,过滤器应写为:path = "my\\\\test\\\\path\\\\"
。
⚠️ 警告: 如果您是从 v1.3.X 或更早版本升级,并且以前在过滤器中使用过反斜杠,请注意在 v1.4.0 中,第一个文档的正确过滤器应为 path = "my\\\\test\\\\path"
。
应用了两层转义::首先,为 JSON 转义,然后为 Meilisearch 过滤器转义。Meilisearch 将 \\\\
转换回 \\
,JSON 解析将得到单个 \
。
考虑使用您的编程语言的内置方法来处理反斜杠:- PHP:addslashes() 函数- JavaScript:虽然 JS 没有用于添加斜杠的特定方法。您可以使用 replace 方法,如 StackOverflow 上建议的那样
贡献者
我们非常感谢所有参与此版本的社区成员。我们要感谢:@dogukanakkaya、@JannisK89 和 @vivek-26 对 Meilisearch 的帮助。我们要特别感谢 mmachatschek 对反斜杠错误提供的帮助和参与。
结论
v1.4 的内容就是这些!请记住查看更新日志以获取完整的发行说明,我们下次再见!
您可以通过订阅我们的新闻通讯来保持关注。要了解有关 Meilisearch 未来并帮助塑造它的更多信息,请查看我们的路线图并参与我们的产品讨论。
如有任何其他问题,请加入我们在 Discord 上的开发者社区。