SwiftyMarisa 是一个用于 marisa-trie 的 Swift 封装。
Swift Package Manager 5.2
匹配算法与递归实现的存储 (MARISA) 是一种静态且空间高效的 trie 数据结构。 libmarisa 是一个 C++ 库,提供 MARISA 的实现。 此外,libmarisa 的包包含一组用于构建和操作基于 MARISA 的字典的命令行工具。
基于 MARISA 的字典不仅支持查找,还支持反向查找、公共前缀搜索和预测搜索。
查找是检查给定字符串是否存在于字典中。 反向查找是从其 ID 恢复键。 公共前缀搜索是从给定字符串的前缀中查找键。 预测搜索是查找以给定字符串开头的键。 libmarisa 最大的优势在于其字典大小远比其他实现更紧凑。 有关其他实现的字典大小,请参见下文。
输入源: enwiki-20121101-all-titles-in-ns0.gz 内容: 英语维基百科的所有页面标题 (2012 年 11 月) 键的数量: 9,805,576 总大小: 200,435,403 字节 (纯文本) / 54,933,690 字节 (gzip 压缩)
import Marisa
let trie = Marisa()
trie.build { (builder) -> Void in
builder("U")
builder("US")
builder("USA")
}
for entry in trie.search("US", .predictive) {
print(entry)
}
print(trie.lookup("US"))
print(trie.lookup("UK"))