Skip to content

Commit bbff33d

Browse files
🌐 Translate 10-enterprise-features.md to Simplified-Chinese
1 parent e29cad2 commit bbff33d

File tree

1 file changed

+63
-59
lines changed

1 file changed

+63
-59
lines changed

docs/cn/guides/55-performance/03-fulltext-index.md

Lines changed: 63 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,114 @@
11
---
2-
title: 全文索引
2+
title: 全文索引(Full-Text Index)
33
---
44

5-
# 全文索引:实现闪电般快速的自动文本搜索
5+
:::info
6+
想要动手实践?请参阅 [JSON 与搜索指南](/guides/query/json-search)
7+
:::
8+
9+
# 全文索引(Full-Text Index):自动化的闪电般快速文本搜索
610

711
import EEFeature from '@site/src/components/EEFeature';
812

913
<EEFeature featureName='INVERTED INDEX'/>
1014

11-
全文索引(倒排索引)通过建立词条到文档的映射关系,自动实现海量文档集合的闪电式文本检索,无需执行缓慢的全表扫描
15+
全文索引(Full-Text Index,也称倒排索引 Inverted Index)通过将词条映射到文档,自动实现对大型文档集合的闪电般快速文本搜索,无需进行缓慢的全表扫描
1216

13-
## 解决哪些问题
17+
## 解决什么问题
1418

15-
大规模数据集上的文本搜索面临显著性能挑战
19+
大数据集上的文本搜索操作面临显著的性能挑战
1620

17-
| 问题 | 影响 | 全文索引解决方案 |
21+
| 问题 | 影响 | 全文索引(Full-Text Index)解决方案 |
1822
|---------|--------|-------------------------|
19-
| **LIKE 查询缓慢** | `WHERE content LIKE '%keyword%'` 需扫描整表 | 直接词条定位,跳过无关文档 |
20-
| **全表扫描** | 每次文本搜索都需读取所有行 | 仅读取包含搜索词条的文档 |
21-
| **搜索体验差** | 用户需等待数秒/分钟获取结果 | 亚秒级搜索响应时间 |
22-
| **搜索功能有限** | 仅支持基础模式匹配 | 支持高级功能:模糊搜索、相关性评分 |
23-
| **资源消耗高** | 文本搜索过度消耗 CPU/内存 | 索引搜索仅需最少资源 |
23+
| **LIKE 查询缓慢** | `WHERE content LIKE '%keyword%'` 扫描整个表 | 直接词条查找,跳过无关文档 |
24+
| **全表扫描** | 每次文本搜索读取所有行 | 仅读取包含搜索词条的文档 |
25+
| **搜索体验差** | 用户等待数秒/数分钟才能获得搜索结果 | 亚秒级搜索响应时间 |
26+
| **搜索能力有限** | 仅支持基本模式匹配 | 高级功能:模糊搜索、相关性评分 |
27+
| **资源使用率高** | 文本搜索消耗过多 CPU/内存 | 索引搜索所需资源极少 |
2428

25-
**示例**:在 1000 万条日志中搜索 "kubernetes error"。无全文索引时需扫描全部 1000 万行,使用全文索引可直接定位约 1000 个匹配文档,瞬间返回结果
29+
**示例**:在 1000 万条日志记录中搜索 "kubernetes error"。没有全文索引时,需要扫描全部 1000 万行。使用全文索引后,可以直接找到约 1000 个匹配文档,瞬间完成
2630

2731
## 工作原理
2832

29-
全文索引创建词条到文档的反向映射
33+
全文索引创建从词条到文档的倒排映射
3034

3135
| 词条 | 文档 ID |
3236
|------|-------------|
3337
| "kubernetes" | 101, 205, 1847 |
3438
| "error" | 101, 892, 1847 |
3539
| "pod" | 205, 1847, 2901 |
3640

37-
搜索 "kubernetes error" 时,索引直接定位同时包含两个词条的文档 (101, 1847),无需扫描整表
41+
搜索 "kubernetes error" 时,索引会找到同时包含这两个词条的文档(101, 1847),无需扫描整个表
3842

39-
## 快速配置
43+
## 快速设置
4044

4145
```sql
42-
-- 创建含文本字段的表
46+
-- 创建包含文本内容的表
4347
CREATE TABLE logs(id INT, message TEXT, timestamp TIMESTAMP);
4448

4549
-- 创建全文索引 - 自动索引新数据
4650
CREATE INVERTED INDEX logs_message_idx ON logs(message);
4751

48-
-- 仅需对索引创建前已存在的数据执行一次性刷新
52+
-- 仅对索引创建前的现有数据需要一次性刷新
4953
REFRESH INVERTED INDEX logs_message_idx ON logs;
5054

51-
-- 使用 MATCH 函数搜索 - 自动优化执行
55+
-- 使用 MATCH 函数搜索 - 完全自动优化
5256
SELECT * FROM logs WHERE MATCH(message, 'error kubernetes');
5357
```
5458

5559
**自动索引管理**
56-
- **新数据**:插入时自动索引,无需人工干预
57-
- **存量数据**仅需对索引创建前存在的数据执行一次性刷新
58-
- **持续维护**:Databend 自动维护最优搜索性能
60+
- **新数据**:插入时自动索引 - 无需手动操作
61+
- **现有数据**仅对索引创建前已存在的数据需要一次性刷新
62+
- **持续维护**:Databend 自动维护最佳搜索性能
5963

6064
## 搜索函数
6165

6266
| 函数 | 用途 | 示例 |
6367
|----------|---------|---------|
64-
| `MATCH(column, 'terms')` | 基础文本搜索 | `MATCH(content, 'database performance')` |
68+
| `MATCH(column, 'terms')` | 基本文本搜索 | `MATCH(content, 'database performance')` |
6569
| `QUERY('column:terms')` | 高级查询语法 | `QUERY('title:"full text" AND content:search')` |
6670
| `SCORE()` | 相关性评分 | `SELECT *, SCORE() FROM docs WHERE MATCH(...)` |
6771

6872
## 高级搜索功能
6973

7074
### 模糊搜索
7175
```sql
72-
-- 支持容错匹配(fuzziness=1 允许 1 个字符差异)
73-
SELECT * FROM logs WHERE MATCH(message, 'kuberntes', 'fuzziness=1');
76+
-- 即使有拼写错误也能找到文档(fuzziness=1 允许 1 个字符差异)
77+
SELECT * FROM logs WHERE MATCH(message, 'kubernetes', 'fuzziness=1');
7478
```
7579

7680
### 相关性评分
7781
```sql
78-
-- 获取带相关性评分的结果,按阈值过滤
82+
-- 获取带相关性评分的结果,按最低分数过滤
7983
SELECT id, message, SCORE() as relevance
8084
FROM logs
8185
WHERE MATCH(message, 'critical error') AND SCORE() > 0.5
8286
ORDER BY SCORE() DESC;
8387
```
8488

85-
### 复合查询
89+
### 复杂查询
8690
```sql
87-
-- 支持布尔运算符的高级查询语法
91+
-- 使用布尔运算符的高级查询语法
8892
SELECT * FROM docs WHERE QUERY('title:"user guide" AND content:(tutorial OR example)');
8993
```
9094

9195
## 完整示例
9296

93-
此示例演示在 Kubernetes 日志数据上创建全文索引并执行多样化搜索
97+
此示例演示在 Kubernetes 日志数据上创建全文搜索索引并使用各种函数进行搜索
9498

9599
```sql
96-
-- 创建含计算列的表
100+
-- 创建带计算列的表
97101
CREATE TABLE k8s_logs (
98102
event_id INT,
99103
event_data VARIANT,
100104
event_timestamp TIMESTAMP,
101105
event_message VARCHAR AS (event_data['message']::VARCHAR) STORED
102106
);
103107

104-
-- 在 event_message 列创建倒排索引
108+
--"event_message" 列上创建倒排索引
105109
CREATE INVERTED INDEX event_message_fulltext ON k8s_logs(event_message);
106110

107-
-- 插入示例数据
111+
-- 插入综合示例数据
108112
INSERT INTO k8s_logs (event_id, event_data, event_timestamp)
109113
VALUES
110114
(1,
@@ -167,7 +171,7 @@ VALUES
167171
}'),
168172
'2024-04-08T12:00:00Z');
169173

170-
-- 基础搜索:查找含 "PersistentVolume" 的事件
174+
-- 基本搜索包含 "PersistentVolume" 的事件
171175
SELECT
172176
event_id,
173177
event_message
@@ -180,7 +184,7 @@ WHERE
180184
event_id: 5
181185
event_message: PersistentVolume claim created
182186

183-
-- 使用 EXPLAIN 验证索引使用
187+
-- 使用 EXPLAIN 验证索引使用情况
184188
EXPLAIN SELECT event_id, event_message FROM k8s_logs WHERE MATCH(event_message, 'PersistentVolume');
185189

186190
-[ EXPLAIN ]-----------------------------------
@@ -217,7 +221,7 @@ WHERE
217221
event_timestamp: 2024-04-08 12:00:00
218222
score(): 0.86304635
219223

220-
-- 模糊搜索示例(支持拼写容错
224+
-- 模糊搜索示例(处理拼写错误
221225
SELECT
222226
event_id, event_message, event_timestamp
223227
FROM
@@ -231,49 +235,49 @@ WHERE
231235
event_timestamp: 2024-04-08 12:00:00
232236
```
233237

234-
**示例核心要点**
235-
- `inverted pruning: 5 to 1` 表明索引将扫描块数从 5 降至 1
236-
- 相关性评分实现按匹配质量排序结果
237-
- 模糊搜索支持拼写差异(如 "create" "created")
238+
**示例要点**
239+
- `inverted pruning: 5 to 1` 显示索引将扫描的块从 5 个减少到 1 个
240+
- 相关性评分有助于按匹配质量对结果排序
241+
- 模糊搜索即使有拼写错误也能找到结果("create" vs "created")
238242

239243
## 最佳实践
240244

241-
| 实践方案 | 优势 |
245+
| 实践 | 优势 |
242246
|----------|---------|
243-
| **为高频搜索列创建索引** | 聚焦搜索查询中的目标列 |
244-
| **使用 MATCH 替代 LIKE** | 充分发挥索引性能优势 |
245-
| **监控索引使用状态** | 通过 EXPLAIN 验证索引生效情况 |
246-
| **考虑多索引方案** | 不同列可建立独立索引 |
247+
| **索引常搜索列** | 专注于搜索查询中使用的列 |
248+
| **使用 MATCH 而非 LIKE** | 利用自动索引性能 |
249+
| **监控索引使用** | 使用 EXPLAIN 验证索引利用率 |
250+
| **考虑多个索引** | 不同列可以有单独的索引 |
247251

248-
## 核心命令
252+
## 基本命令
249253

250-
| 命令 | 用途 | 使用场景 |
254+
| 命令 | 用途 | 使用时机 |
251255
|---------|---------|-------------|
252-
| `CREATE INVERTED INDEX name ON table(column)` | 新建全文索引 | 初始配置 - 新数据自动索引 |
253-
| `REFRESH INVERTED INDEX name ON table` | 索引存量数据 | 仅需对索引前数据执行一次 |
256+
| `CREATE INVERTED INDEX name ON table(column)` | 创建新的全文索引 | 初始设置 - 对新数据自动生效 |
257+
| `REFRESH INVERTED INDEX name ON table` | 索引现有数据 | 仅对预先存在的数据一次性使用 |
254258
| `DROP INVERTED INDEX name ON table` | 删除索引 | 不再需要索引时 |
255259

256260
## 重要说明
257261

258262
:::tip
259-
**适用场景**
260-
- 海量文本数据集(文档/日志/评论)
261-
- 高频文本搜索操作
262-
- 需要高级搜索功能(模糊匹配/相关性评分
263-
- 性能敏感的搜索应用
263+
**何时使用全文索引(Full-Text Index):**
264+
- 大型文本数据集(文档、日志、评论)
265+
- 频繁的文本搜索操作
266+
- 需要高级搜索功能(模糊、评分
267+
- 性能关键的搜索应用
264268

265-
**非适用场景**
269+
**何时不使用:**
266270
- 小型文本数据集
267-
- 仅需精确字符串匹配
268-
- 低频搜索操作
271+
- 仅精确字符串匹配
272+
- 不频繁的搜索操作
269273
:::
270274

271275
## 索引限制
272276

273-
- 单列仅能归属一个倒排索引
274-
- 数据插入后需手动刷新(针对索引创建前已存在的数据
275-
- 需额外存储空间存放索引数据
277+
- 每列只能在一个倒排索引中
278+
- 需要在数据插入后刷新(如果数据在索引创建前已存在
279+
- 索引数据使用额外的存储空间
276280

277281
---
278282

279-
*全文索引是处理海量文档集合并实现高速、复杂文本搜索的关键组件*
283+
*全文索引(Full-Text Index)对于需要在大型文档集合中进行快速、复杂文本搜索的应用至关重要*

0 commit comments

Comments
 (0)