#key-value-store #fst #search #big-data #string-matching #fuzzy-string

sys keyvi

Keyvi - 键值索引。它是一种基于内存的 FST 数据结构,针对大小和查找性能进行了高度优化。

13 个版本

使用旧 Rust 2015

0.5.6 2022 年 7 月 22 日
0.5.3 2021 年 5 月 19 日
0.5.1 2021 年 3 月 20 日
0.5.0 2020 年 12 月 12 日
0.3.0 2018 年 3 月 28 日

337数据结构 中排名

Download history 315/week @ 2024-03-13 339/week @ 2024-03-20 279/week @ 2024-03-27 233/week @ 2024-04-03 242/week @ 2024-04-10 257/week @ 2024-04-17 308/week @ 2024-04-24 347/week @ 2024-05-01 337/week @ 2024-05-08 228/week @ 2024-05-15 226/week @ 2024-05-22 272/week @ 2024-05-29 364/week @ 2024-06-05 313/week @ 2024-06-12 306/week @ 2024-06-19 241/week @ 2024-06-26

每月 1,291 次下载

Apache-2.0

1.5MB
39K SLoC

C++ 38K SLoC // 0.1% comments Ruby HTML 883 SLoC Shell 341 SLoC // 0.1% comments Rust 277 SLoC // 0.3% comments KV Language 33 SLoC INI 7 SLoC Forge Config 3 SLoC JavaScript 2 SLoC

BuildBadge C++ PythonVersions PythonImpl PythonFormat PyPIVersion

Keyvi

Keyvi - "键值索引"的简称,是一种针对大小和查找速度进行优化的键值存储(KVS)。共享内存的使用使其可扩展且具有抵抗力。与其他存储的最大不同之处在于其基于有限状态机的底层数据结构。存储非常节省空间,速度快,并且通过设计使得各种近似匹配(无论是模糊字符串匹配还是地理匹配)都变得高度高效。不可变的 FST 数据结构可以用于独立静态数据集。如果您需要在线写入,可以使用 keyvi 索引,这是一个近实时索引。该索引可以用作嵌入式键值存储,例如,如果您已经在应用程序中有一个网络栈。还有带有keyvi-server的网络启用存储。

简介

安装

快速

预编译的二进制 wheel 可用于 OS X 和 Linux 上的 PyPi。要安装,请使用

pip install keyvi

从源代码

核心部分是一个 C++ 只读头文件库,可以独立使用。有关更多信息,请参阅 keyvi 子文件夹中的 Readme 文件。

Python 扩展可以独立编译,有关更多信息,请参阅 python 子文件夹中的 Readme 文件。

用法

内部

如果您想深入了解基础知识,keyvi 受以下 2 篇论文的启发:

发布程序

许可协议

keyvi 遵循 Apache License 2.0("ALv2"),详情请见许可协议,所有第三方库都附带各自的许可协议。除了 Boost、Snappy 和 zlib,所有第三方代码都可以在第三方文件夹中找到。以下是对第三方代码使用的许可协议(最后更新:0.5.0,提供无任何保证)。

C++ 依赖

依赖 许可协议
Boost Boost 软件许可协议
moodycamel::ConcurrentQueue 简化版 BSD 许可协议
md5 RSA MD5 许可协议
msgpack-c Boost 软件许可协议
RapidJSON MIT 许可协议
Snappy BSD 许可协议
Zlib Zlib 许可协议

Python 依赖

Python 版本包含与 C++ 代码相同的第三方依赖项,并额外依赖

依赖 许可协议
msgpack (for python) Apache License,版本 2.0

致谢

感谢以下机构

依赖项

~0.7–3.5MB
~72K SLoC