
让我们来看看Meilisearch最新更新中的一些最重要的变化。我们将在本文中介绍主要变化,但您也可以在GitHub上查看完整的变更日志。
v1.4现已在Meilisearch Cloud上可用。一键升级您的Meilisearch实例,无需停机。
新功能:自定义文本分隔符
为了使字符串数据可搜索,Meilisearch依赖于分隔符,因为它们用于将字符串分割成词元或单词。分隔符的例子包括空格、句点或井号(#)。它们在帮助Meilisearch有效分割文本和提高搜索相关性方面起着至关重要的作用。
Meilisearch带有一个预定义的分隔符列表。然而,这些分隔符并不适用于所有用例。例如,在标签搜索中,井号不应被视为分隔符,而是单词的一部分。
从v1.4开始,Meilisearch允许您自定义分隔符列表以满足您的特定需求。
使用SDK或API
向分隔符列表添加字符
要在分隔符列表中包含字符,请更新您的索引的“分隔符词元”设置。
client.index('myIndex').updateSeparatorTokens(['§'])
此请求将节号字符(`§`)的编码版本添加到分隔符词元列表中。
从分隔符列表中删除字符
要从分隔符列表中删除一个或多个字符,请更新您的索引的“非分隔符词元”设置
client.index('myIndex').updateNonSeparatorTokens(['@', '#', '&'])
使用Meilisearch云服务
在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上的开发者社区。