增加交并计算功能
This commit is contained in:
76
README.md
76
README.md
@@ -8,6 +8,7 @@ BloomTool 是一个基于 Go 语言开发的布隆过滤器命令行工具,用
|
||||
- **低误判率**: 支持自定义误判率,默认千万分之一
|
||||
- **大容量**: 支持最多 100 亿个元素
|
||||
- **简单易用**: 命令行界面,操作简单
|
||||
- **位图运算**: 支持AND/OR位图运算,实现集合操作
|
||||
|
||||
## 安装
|
||||
|
||||
@@ -28,7 +29,7 @@ bloomtool makebloom -d <设备ID文件> -b <位图输出文件> [-e <最大元
|
||||
|
||||
**参数:**
|
||||
- `-d`: 设备ID文本文件路径(每行一个ID)
|
||||
- `-b`: 布隆过滤器位图输出文件路径
|
||||
- `-o`: 布隆过滤器位图输出文件路径
|
||||
- `-e`: 最大元素数量(0表示自动计算,最大100亿)
|
||||
- `-r`: 误判率(0.01-0.000000001,默认0.00000001)
|
||||
|
||||
@@ -80,7 +81,59 @@ bloomtool info -b <位图文件>
|
||||
bloomtool info -b bloom.blm
|
||||
```
|
||||
|
||||
### 4. help - 帮助信息
|
||||
### 4. and - 位图与运算(求交)
|
||||
|
||||
对两个布隆过滤器位图文件执行AND(与)运算,生成新的位图文件。
|
||||
|
||||
**注意:对两个文件进行与运算,并不等同于元素求交。请查阅bloomfilter的作用原理。**
|
||||
|
||||
**语法:**
|
||||
```bash
|
||||
bloomtool and -b1 <位图文件1> -b2 <位图文件2> -o <输出文件>
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `-b1`: 第一个布隆过滤器位图文件路径
|
||||
- `-b2`: 第二个布隆过滤器位图文件路径
|
||||
- `-o`: AND运算结果输出文件路径
|
||||
|
||||
**说明:**
|
||||
- AND运算结果包含同时存在于两个布隆过滤器中的元素
|
||||
- 要求两个位图文件的参数(元素数量上限和误判率)必须完全一致
|
||||
- 运算结果仍然是一个布隆过滤器,可以继续用于其他操作
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
# 对两个布隆过滤器执行AND运算
|
||||
bloomtool and -b1 bloom1.blm -b2 bloom2.blm -b result.blm
|
||||
```
|
||||
|
||||
### 5. or - 位图或运算(求并)
|
||||
|
||||
对两个布隆过滤器位图文件执行OR(或)运算,生成新的位图文件。
|
||||
|
||||
**语法:**
|
||||
```bash
|
||||
bloomtool or -b1 <位图文件1> -b2 <位图文件2> -o <输出文件>
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `-b1`: 第一个布隆过滤器位图文件路径
|
||||
- `-b2`: 第二个布隆过滤器位图文件路径
|
||||
- `-o`: OR运算结果输出文件路径
|
||||
|
||||
**说明:**
|
||||
- OR运算结果包含存在于任一布隆过滤器中的元素
|
||||
- 要求两个位图文件的参数(元素数量上限和误判率)必须完全一致
|
||||
- 运算结果仍然是一个布隆过滤器,可以继续用于其他操作
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
# 对两个布隆过滤器执行OR运算
|
||||
bloomtool or -b1 bloom1.blm -b2 bloom2.blm -b result.blm
|
||||
```
|
||||
|
||||
### 6. help - 帮助信息
|
||||
|
||||
显示命令使用帮助。
|
||||
|
||||
@@ -112,6 +165,23 @@ bloomtool hittest -d test_devices.txt -b device_bloom.blm -s test_results.txt
|
||||
bloomtool info -b device_bloom.blm
|
||||
```
|
||||
|
||||
4. **位图运算示例**
|
||||
```bash
|
||||
# 创建两个不同的布隆过滤器
|
||||
bloomtool makebloom -d devices1.txt -b bloom1.blm
|
||||
bloomtool makebloom -d devices2.txt -b bloom2.blm
|
||||
|
||||
# AND运算:获取同时存在于两个集合中的元素
|
||||
bloomtool and -b1 bloom1.blm -b2 bloom2.blm -b intersection.blm
|
||||
|
||||
# OR运算:获取存在于任一集合中的元素
|
||||
bloomtool or -b1 bloom1.blm -b2 bloom2.blm -b union.blm
|
||||
|
||||
# 测试运算结果
|
||||
bloomtool hittest -d test_ids.txt -b intersection.blm -s intersection_results.txt
|
||||
bloomtool hittest -d test_ids.txt -b union.blm -s union_results.txt
|
||||
```
|
||||
|
||||
## 文件格式说明
|
||||
|
||||
### 输入文件格式
|
||||
@@ -128,6 +198,7 @@ bloomtool info -b device_bloom.blm
|
||||
- **查询速度**: 常数时间复杂度的查询操作
|
||||
- **误判率可控**: 可根据需求调整误判率
|
||||
- **大容量支持**: 支持海量数据处理
|
||||
- **集合运算**: 支持高效的位图AND/OR运算
|
||||
|
||||
## 注意事项
|
||||
|
||||
@@ -135,6 +206,7 @@ bloomtool info -b device_bloom.blm
|
||||
2. 不支持从布隆过滤器中删除元素
|
||||
3. 位图文件大小与元素数量和误判率相关
|
||||
4. 建议对输入数据进行哈希处理以提高性能
|
||||
5. AND/OR运算要求两个位图文件的参数必须完全一致
|
||||
|
||||
## 依赖项
|
||||
|
||||
|
||||
Reference in New Issue
Block a user