# C语言实现的rime输入法编码反查功能 **Repository Path**: dbv771/query_code_from_rime ## Basic Information - **Project Name**: C语言实现的rime输入法编码反查功能 - **Description**: C语言实现的rime输入法编码反查功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-11 - **Last Updated**: 2026-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tjckg-query (Go 版本) 反查汉字在 `flypy_top2.txt` 中对应的编码,支持**精确匹配**与**模糊搜索**。 ## 一、功能概述 | 功能 | 说明 | | --- | --- | | 精确反查 | 输入一个汉字,输出其全部编码 | | 模糊搜索 | 输入一个关键词,输出所有相关结果(汉字子串 / 编码子串 / 编码前缀) | | 多文件 | 可同时指定多个数据文件 | | 交互模式 | 不带参数运行时进入交互式输入 | | 管道友好 | 结果输出到 stdout,统计信息输出到 stderr | ## 二、数据文件格式 `flypy_top2.txt` 每行格式: ``` # 注释行(以 # 开头) 汉字 编码 [ 权重] ``` 示例: ``` 的 de 的 debu 得 de 得 deic ``` - 第一列:汉字(文本) - 第二列:编码 - 第三列(可选):权重,本程序忽略 ## 三、编译 ```bash go build -o tjckg-query tjckg_query.go ``` 或直接运行: ```bash go run tjckg_query.go 的 ``` ## 四、用法 ``` tjckg-query [选项] [关键词] ``` ### 选项 | 选项 | 说明 | | --- | --- | | `-v` | 输出「汉字 编码」完整格式 | | `-m` | 启用模糊搜索(默认按汉字子串匹配) | | `-c` | 模糊搜索时按**编码**匹配 | | `-p` | 模糊搜索时按**编码前缀**匹配 | | `-u` | 按编码去重 | | `-n <数量>` | 限制输出条数(0 表示不限制) | | `-f <文件>` | 指定数据文件(可重复使用) | | `-h`, `--help` | 显示帮助 | > **注意**:选项与关键词可**任意顺序混排**,例如以下写法均等价: > > ```bash > ./tjckg-query -m -p ai -u -n 5 > ./tjckg-query -m -p -u -n 5 ai > ./tjckg-query ai -m -p -u -n 5 > ``` > > 也支持紧凑写法 `-n5`、`-f./flypy_top2.txt`。 ### 示例 **1. 精确反查** ```bash $ ./tjckg-query 的 de debu ``` **2. 精确反查(详细格式)** ```bash $ ./tjckg-query -v 的 的 de 的 debu ``` **3. 模糊搜索(按汉字子串)** ```bash $ ./tjckg-query -m 的 的 de 的 debu ... ``` **4. 模糊搜索(按编码子串)** ```bash $ ./tjckg-query -m -c a 啊 a 阿 aa 腌 aao ... ``` **5. 模糊搜索(按编码前缀)** ```bash $ ./tjckg-query -m -p ai 爱 ai 哎 aikx 唉 aik ... ``` **6. 指定数据文件** ```bash $ ./tjckg-query -f ./flypy_top2.txt 的 ``` **7. 交互式输入** ```bash $ ./tjckg-query 请输入要反查的汉字: 的 de debu ``` **8. 去重 + 限制条数** ```bash $ ./tjckg-query -m -p ai -u -n 5 ai aib aibe aibj aic ``` > 选项与关键词可任意顺序混排,`-m -p ai -u -n 5` 与 `-m -p -u -n 5 ai` 等价。 ## 五、模糊搜索匹配规则 模糊搜索按以下优先级排序输出: | 优先级 | 匹配类型 | 说明 | | --- | --- | --- | | 1(最高) | 精确 | 完全相等 | | 2 | 前缀 | 以关键词开头 | | 3 | 子串 | 包含关键词 | 同一优先级内,按编码长度升序排列(短编码优先);同长度内按编码字典序升序,保证输出稳定可预测。 ### 搜索模式 - **默认(`-m`)**:按汉字文本匹配 - **`-m -c`**:按编码匹配(精确 / 前缀 / 子串) - **`-m -p`**:按编码前缀匹配 ## 六、与 C 版本的差异 | 特性 | C 版本 | Go 版本 | | --- | --- | --- | | 精确反查 | ✅ | ✅ | | 模糊搜索 | ❌ | ✅ | | 按编码搜索 | ❌ | ✅ | | 按编码前缀搜索 | ❌ | ✅ | | 结果排序 | 文件顺序 | 按匹配度排序 | | 多文件 | ✅ | ✅ | | 交互模式 | ✅ | ✅ | ## 七、退出码 | 退出码 | 含义 | | --- | --- | | 0 | 成功找到结果 | | 1 | 未找到结果 / 输入为空 | | 2 | 参数错误 | ## 八、注意事项 1. 默认数据文件路径为 `/home/luj/.config/fcitx/rime/flypy_top2.txt`,可通过 `-f` 覆盖。 2. 模糊搜索对大小写不敏感(编码统一转小写比较)。 3. 结果统计信息输出到 stderr,不会污染 stdout,方便管道使用: ```bash ./tjckg-query -m 的 | head -n 5 ```