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 在 数据结构 中排名
每月 1,291 次下载
1.5MB
39K SLoC
Keyvi - "键值索引"的简称,是一种针对大小和查找速度进行优化的键值存储(KVS)。共享内存的使用使其可扩展且具有抵抗力。与其他存储的最大不同之处在于其基于有限状态机的底层数据结构。存储非常节省空间,速度快,并且通过设计使得各种近似匹配(无论是模糊字符串匹配还是地理匹配)都变得高度高效。不可变的 FST 数据结构可以用于独立静态数据集。如果您需要在线写入,可以使用 keyvi 索引,这是一个近实时索引。该索引可以用作嵌入式键值存储,例如,如果您已经在应用程序中有一个网络栈。还有带有keyvi-server的网络启用存储。
简介
安装
快速
预编译的二进制 wheel 可用于 OS X 和 Linux 上的 PyPi。要安装,请使用
pip install keyvi
从源代码
核心部分是一个 C++ 只读头文件库,可以独立使用。有关更多信息,请参阅 keyvi 子文件夹中的 Readme 文件。
Python 扩展可以独立编译,有关更多信息,请参阅 python 子文件夹中的 Readme 文件。
用法
内部
如果您想深入了解基础知识,keyvi 受以下 2 篇论文的启发:
- 稀疏数组(参见《存储稀疏表》,Robert E. Tarjan 等人:http://infolab.stanford.edu/pub/cstr/reports/cs/tr/78/683/CS-TR-78-683.pdf)
- 增量,即最小化操作是实时完成的(参见《最小非循环有限状态自动机的增量构造》,J. Daciuk 等人:http://www.mitpressjournals.org/doi/pdf/10.1162/089120100561601)
发布程序
许可协议
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