*Redis FT.SYNDUMP 命令
FT.SYNDUMP 用于返回指定同义词组(synonym group)中的所有词项,或返回索引中所有同义词组的 ID 列表。
*语法
FT.SYNDUMP index_name
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| index_name | String | 是 | 索引名称 |
*返回值
返回一个数组,包含同义词组信息:
- 每个同义词组以组 ID 开头,后跟该组包含的所有词项
- 格式:[group_id, term1, term2, ...]
- 若索引中没有同义词,返回空数组
*时间复杂度
O(n),其中 n 是索引中同义词组的总数和每个组中的词项数量。
*示例
*基本用法
> FT.SYNDUMP myIndex
1) 1) "1"
2) "phone"
3) "telephone"
4) "cell"
5) "mobile"
2) 1) "2"
2) "laptop"
3) "notebook"
4) "computer"
*空同义词索引
> FT.SYNDUMP emptyIndex
(empty array)
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| Unknown index name | 索引不存在 | 检查索引名称或先创建索引 |
*最佳实践
- 使用 FT.SYNDUMP 备份同义词配置,便于迁移和恢复
- 定期检查同义词组内容,确保没有重复或冲突的定义
- 在更新同义词组前先用 FT.SYNDUMP 查看现有配置,避免意外覆盖
- 将同义词配置纳入版本控制,作为搜索配置的一部分
- 同义词组 ID 通常从 1 开始自动递增,dump 输出可帮助确认当前组 ID 分配情况
*FAQ
Q1: FT.SYNDUMP 会返回所有同义词组吗? A: 是的,返回索引中所有已定义的同义词组及其包含的词项。
Q2: 同义词组 ID 可以自定义吗? A: 同义词组 ID 由 RediSearch 内部自动分配(通常从 1 开始递增),用户无法直接指定 ID。
Q3: 如何只查看某个特定同义词组? A: FT.SYNDUMP 不支持按组 ID 过滤,会返回所有组。可在客户端过滤输出结果。
Q4: 同义词和查询扩展器有什么区别? A: 同义词是静态的等价词映射,在索引和查询阶段都会应用。查询扩展器(如前缀扩展、模糊扩展)是动态的,在查询时根据规则扩展。