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"))