Skip to content

Commit 29c6da2

Browse files
AI Translate 55-performance to Simplified-Chinese (#2457)
* [INIT] Start translation to Simplified-Chinese * 🌐 Translate ngram-index.md to Simplified-Chinese * 🌐 Translate ngram-index.md to Simplified-Chinese * 🌐 Translate ngram-index.md to Simplified-Chinese --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: z <[email protected]>
1 parent d9fe9ef commit 29c6da2

File tree

4 files changed

+88
-88
lines changed

4 files changed

+88
-88
lines changed

.translation-init

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Translation initialization: 2025-06-23T07:12:01.410852
1+
Translation initialization: 2025-06-23T07:16:51.071305

docs/cn/guides/55-performance/ngram-index.md

Lines changed: 76 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -2,107 +2,107 @@
22
title: Ngram 索引
33
---
44

5-
# Ngram 索引LIKE 查询的高速模式匹配
5+
# Ngram 索引(Ngram Index):为 LIKE 查询实现快速模式匹配
66

77
import EEFeature from '@site/src/components/EEFeature';
88

99
<EEFeature featureName='NGRAM INDEX'/>
1010

11-
Ngram 索引通过带通配符 (`%`) 的 `LIKE` 操作符加速模式匹配查询,无需全表扫描即可实现快速子字符串搜索
11+
Ngram 索引(Ngram Index)能够加速使用 `LIKE` 操作符和通配符(`%`)的模式匹配查询,实现快速的子字符串搜索,而无需进行全表扫描
1212

13-
## 解决什么问题
13+
## 它解决了什么问题
1414

15-
`LIKE` 模式匹配在大数据集上存在显著性能挑战
15+
在使用 `LIKE` 进行模式匹配查询时,大型数据集会面临严峻的性能挑战
1616

17-
| 问题 | 影响 | Ngram 索引解决方案 |
17+
| 问题 | 影响 | Ngram 索引(Ngram Index)解决方案 |
1818
|---------|--------|---------------------|
19-
| **通配符搜索慢** | `WHERE content LIKE '%keyword%'` 需扫描全表 | 使用 n-gram 片段预过滤数据块 |
20-
| **全表扫描** | 每次模式搜索都需读取所有行 | 仅读取包含模式的相关数据块 |
21-
| **搜索性能差** | 子字符串搜索结果等待时间长 | 亚秒级模式匹配响应时间 |
22-
| **传统索引失效** | B-tree 索引无法优化中间通配符 | 字符级索引处理任意通配符位置 |
19+
| **通配符搜索缓慢** | `WHERE content LIKE '%keyword%'` 会扫描整个表 | 使用 n-gram 片段预过滤数据块 |
20+
| **全表扫描** | 每次模式搜索都会读取所有行 | 仅读取包含模式的相关数据块 |
21+
| **搜索性能不佳** | 用户等待子字符串搜索结果的时间很长 | 亚秒级模式匹配响应时间 |
22+
| **传统索引效率低下** | B-tree 索引无法优化中间的通配符 | 字符级索引可处理任何通配符位置 |
2323

24-
**示例**:在 1000 万条日志中搜索 `'%error log%'`无 ngram 索引时需扫描全部 1000 万行;使用 ngram 索引可立即预过滤至约 1000 个相关数据块
24+
**示例**:在 1000 万条日志条目中搜索 `'%error log%'`如果没有 Ngram 索引(Ngram Index),查询会扫描全部 1000 万行。而使用 Ngram 索引(Ngram Index),查询可以立即将范围预过滤到约 1000 个相关的数据块
2525

2626
## Ngram 索引 vs 全文索引:如何选择?
2727

28-
| 特性 | Ngram 索引 | 全文索引 |
28+
| 特性 | Ngram 索引(Ngram Index) | 全文索引(Full-Text Index) |
2929
|---------|-------------|-----------------|
30-
| **主要用途** | `LIKE '%pattern%'` 模式匹配 | `MATCH()` 语义文本搜索 |
31-
| **搜索类型** | 精确子字符串匹配 | 基于词汇的搜索(含相关性) |
30+
| **主要使用场景** | 使用 `LIKE '%pattern%'` 进行模式匹配 | 使用 `MATCH()` 进行语义文本搜索 |
31+
| **搜索类型** | 精确子字符串匹配 | 基于词语的相关性搜索 |
3232
| **查询语法** | `WHERE column LIKE '%text%'` | `WHERE MATCH(column, 'text')` |
33-
| **高级功能** | 不区分大小写匹配 | 模糊搜索、相关性评分、布尔运算符 |
34-
| **性能重点** | 加速现有 LIKE 查询 | 用高级搜索替代 LIKE |
35-
| **适用场景** | 日志分析、代码搜索、精确匹配 | 文档搜索、内容发现、搜索引擎 |
33+
| **高级功能** | 不区分大小写的匹配 | 模糊搜索、相关性评分、布尔运算符 |
34+
| **性能重点** | 加速现有的 LIKE 查询 | 用高级搜索功能替代 LIKE |
35+
| **最适合** | 日志分析、代码搜索、精确模式匹配 | 文档搜索、内容发现、搜索引擎 |
3636

37-
**选择 Ngram 索引当**
38-
- 需优化现有 `LIKE '%pattern%'` 查询
39-
- 要求精确子字符串匹配(不区分大小写)
40-
- 处理日志、代码或 ID 等结构化数据
41-
- 需提升性能但不改变查询语法
37+
**选择 Ngram 索引(Ngram Index)的情况**
38+
- 您需要优化现有的 `LIKE '%pattern%'` 查询
39+
- 需要精确的子字符串匹配(不区分大小写)
40+
- 处理结构化数据,如日志、代码或 ID
41+
- 希望在不更改查询语法的情况下提高性能
4242

43-
**选择全文索引当**
43+
**选择全文索引(Full-Text Index)的情况**
4444
- 为文档或内容构建搜索功能
4545
- 需要模糊搜索、相关性评分或复杂查询
4646
- 处理自然语言文本
47-
- 需要超越简单模式匹配的高级搜索能力
47+
- 希望获得超越简单模式匹配的高级搜索能力
4848

49-
## 工作原理
49+
## Ngram 索引(Ngram Index)工作原理
5050

51-
Ngram 索引将文本拆分为重叠字符子串(n-gram)实现快速模式查找
51+
Ngram 索引(Ngram Index)将文本分解为重叠的字符子串(n-gram),以实现快速的模式查找
5252

53-
**`gram_size = 3` 示例**
53+
**`gram_size = 3` 的示例**
5454
```text
55-
输入: "The quick brown"
56-
N-grams: "The", "he ", "e q", " qu", "qui", "uic", "ick", "ck ", "k b", " br", "bro", "row", "own"
55+
输入"The quick brown"
56+
N-grams"The", "he ", "e q", " qu", "qui", "uic", "ick", "ck ", "k b", " br", "bro", "row", "own"
5757
```
5858

59-
**查询处理流程**
59+
**查询处理**
6060
```sql
6161
SELECT * FROM t WHERE content LIKE '%quick br%'
6262
```
63-
1. 模式 `'quick br'` 拆解为 n-gram: "qui", "uic", "ick", "ck ", "k b", " br"
64-
2. 索引过滤包含这些 n-gram 的数据块
65-
3. 完整 `LIKE` 过滤仅作用于预筛选数据块
66-
67-
:::note **关键限制**
68-
- 模式长度至少需 `gram_size` 字符(如 `gram_size=3``'%yo%'` 无法使用索引
69-
- 匹配不区分大小写("FOO" 可匹配 "foo", "Foo", "fOo")
70-
- 仅支持 `LIKE` 操作符,不适用其他模式匹配函数
63+
1. 模式 `'quick br'` 被分词为 n-gram"qui", "uic", "ick", "ck ", "k b", " br"
64+
2. 索引过滤出包含这些 n-gram 的数据块
65+
3. 完整的 `LIKE` 过滤器仅应用于预过滤的数据块
66+
67+
:::note **重要限制**
68+
- 模式长度必须至少为 `gram_size` 个字符(例如,当 `gram_size=3`,像 `'%yo%'` 这样的短模式将不会使用索引
69+
- 匹配不区分大小写("FOO" 会匹配 "foo""Foo""fOo")
70+
- 仅适用于 `LIKE` 操作符,不适用于其他模式匹配函数
7171
:::
7272

7373
## 快速设置
7474

7575
```sql
76-
-- Create table with text content
76+
-- 创建包含文本内容的表
7777
CREATE TABLE logs(id INT, message STRING);
7878

79-
-- Create ngram index with 3-character segments
79+
-- 创建一个 n-gram 索引,分词长度为 3
8080
CREATE NGRAM INDEX logs_message_idx ON logs(message) gram_size = 3;
8181

82-
-- Insert data (automatically indexed)
82+
-- 插入数据(将自动索引)
8383
INSERT INTO logs VALUES (1, 'Application error occurred');
8484

85-
-- Search using LIKE - automatically optimized
85+
-- 使用 LIKE 进行搜索 - 将自动优化
8686
SELECT * FROM logs WHERE message LIKE '%error%';
8787
```
8888

8989
## 完整示例
9090

91-
创建 ngram 索引进行日志分析并验证性能优势
91+
此示例演示了如何为日志分析创建 Ngram 索引(Ngram Index)并验证其性能优势
9292

9393
```sql
94-
-- Create table for application logs
94+
-- 为应用程序日志创建表
9595
CREATE TABLE t_articles (
9696
id INT,
9797
content STRING
9898
);
9999

100-
-- Create ngram index with 3-character segments
100+
-- 创建一个 n-gram 索引,分词长度为 3
101101
CREATE NGRAM INDEX ngram_idx_content
102102
ON t_articles(content)
103103
gram_size = 3;
104104

105-
-- Verify index creation
105+
-- 验证索引创建
106106
SHOW INDEXES;
107107
```
108108

@@ -115,7 +115,7 @@ SHOW INDEXES;
115115
```
116116

117117
```sql
118-
-- Insert test data: 995 irrelevant rows + 5 target rows
118+
-- 插入测试数据:995 行不相关数据 + 5 行目标数据
119119
INSERT INTO t_articles
120120
SELECT number, CONCAT('Random text number ', number)
121121
FROM numbers(995);
@@ -127,10 +127,10 @@ INSERT INTO t_articles VALUES
127127
(1004, 'A moment of silence was observed'),
128128
(1005, 'In silence, they understood each other');
129129

130-
-- Search with pattern matching
130+
-- 使用模式匹配进行搜索
131131
SELECT id, content FROM t_articles WHERE content LIKE '%silence%';
132132

133-
-- Verify index usage
133+
-- 验证索引使用情况
134134
EXPLAIN SELECT id, content FROM t_articles WHERE content LIKE '%silence%';
135135
```
136136

@@ -149,41 +149,41 @@ TableScan
149149
└── estimated rows: 15.62
150150
```
151151

152-
**关键指标** `bloom pruning: 2 to 1` 表明 ngram 索引在扫描前成功过滤了 50% 数据块
152+
**关键性能指标** `bloom pruning: 2 to 1` 表明 Ngram 索引(Ngram Index)在扫描前成功过滤掉了 50% 的数据块
153153

154154
## 最佳实践
155155

156-
| 实践 | 优势 |
156+
| 实践 | 益处 |
157157
|----------|---------|
158-
| **选择合适的 gram_size** | `gram_size=3` 适用多数场景;更长模式用更大值 |
159-
| **索引高频搜索列** | 聚焦于 `LIKE '%pattern%'` 查询使用的列 |
160-
| **监控索引使用** | 通过 `EXPLAIN` 验证 `bloom pruning` 统计 |
161-
| **注意模式长度** | 确保搜索模式长度 ≥ `gram_size` |
162-
163-
## 核心命令
164-
165-
完整命令参考详见 [Ngram 索引](/sql/sql-commands/ddl/ngram-index/)
166-
167-
| 命令 | 用途 |
168-
|----------------------------------------------------------|----------------------|
169-
| `CREATE NGRAM INDEX name ON table(column) gram_size = N` | 创建含 N 字符片段的 ngram 索引 |
170-
| `SHOW INDEXES` | 列出所有索引(含 ngram 索引 |
171-
| `REFRESH NGRAM INDEX name ON table` | 刷新 ngram 索引 |
172-
| `DROP NGRAM INDEX name ON table` | 删除 ngram 索引 |
173-
174-
:::tip **使用场景**
175-
**适用**
176-
- 日志分析与监控系统
177-
- 代码搜索与模式匹配
158+
| **选择合适的 gram_size** | `gram_size=3` 适用于大多数情况;对于更长的模式使用更大的值 |
159+
| **为频繁搜索的列创建索引** | 专注于在 `LIKE '%pattern%'` 查询中使用的列 |
160+
| **监控索引使用情况** | 使用 `EXPLAIN` 验证 `bloom pruning` 统计信息 |
161+
| **考虑模式长度** | 确保搜索模式的长度至少为 `gram_size` 个字符 |
162+
163+
## 基本命令
164+
165+
有关完整的命令参考,请参见 [Ngram 索引(Ngram Index)](/sql/sql-commands/ddl/ngram-index/)
166+
167+
| 命令 | 目的 |
168+
|----------------------------------------------------------|----------------------------------------------|
169+
| `CREATE NGRAM INDEX name ON table(column) gram_size = N` | 创建一个 n-gram 索引,分词长度为 N |
170+
| `SHOW INDEXES` | 列出所有索引,包括 n-gram 索引 |
171+
| `REFRESH NGRAM INDEX name ON table` | 刷新 n-gram 索引 |
172+
| `DROP NGRAM INDEX name ON table` | 删除 n-gram 索引 |
173+
174+
:::tip **何时使用 Ngram 索引(Ngram Index)**
175+
**理想场景**
176+
- 日志分析和监控系统
177+
- 代码搜索和模式匹配
178178
- 产品目录搜索
179-
- 高频使用 `LIKE '%pattern%'` 的应用
179+
- 任何频繁使用 `LIKE '%pattern%'` 查询的应用
180180

181-
**不适用**
182-
- 短模式搜索(短于 `gram_size` 字符
183-
- 精确字符串匹配(应使用等值比较
184-
- 复杂文本搜索(应使用全文索引)
181+
**不推荐的场景**
182+
- 短模式搜索(长度小于 `gram_size` 个字符
183+
- 精确字符串匹配(应使用等号比较
184+
- 复杂的文本搜索需求(应使用全文索引(Full-Text Index)
185185
:::
186186

187187
---
188188

189-
*Ngram 索引是大型文本数据集上实现 `LIKE` 查询高速模式匹配的关键组件*
189+
*对于需要在大型文本数据集上使用 `LIKE` 查询进行快速模式匹配的应用,Ngram 索引(Ngram Index)至关重要*

docs/cn/sql-reference/10-sql-commands/00-ddl/07-ngram-index/index.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import EEFeature from '@site/src/components/EEFeature';
55

66
<EEFeature featureName='NGRAM INDEX'/>
77

8-
本文全面介绍 Databend Ngram 索引的功能操作,按模块分类便于查阅
8+
本页面全面概述了 Databend 中的 Ngram 索引(Ngram Index)操作,并按功能进行组织,方便参考
99

1010
## Ngram 索引管理
1111

12-
| 命令 | 描述 |
13-
|-----------------------------------------------|-------------------------|
14-
| [CREATE NGRAM INDEX](create-ngram-index.md) | 创建新的 Ngram 索引用于高效子字符串搜索 |
15-
| [REFRESH NGRAM INDEX](refresh-ngram-index.md) | 刷新 Ngram 索引 |
16-
| [DROP NGRAM INDEX](drop-ngram-index.md) | 删除 Ngram 索引 |
12+
| 命令 | 描述 |
13+
|-----------------------------------------------|----------------------------------------------------------|
14+
| [CREATE NGRAM INDEX](create-ngram-index.md) | 创建新的 Ngram 索引(Ngram Index),实现高效子字符串搜索 |
15+
| [REFRESH NGRAM INDEX](refresh-ngram-index.md) | 刷新 Ngram 索引(Ngram Index) |
16+
| [DROP NGRAM INDEX](drop-ngram-index.md) | 移除 Ngram 索引(Ngram Index) |
1717

1818
:::note
19-
Databend 的 Ngram 索引支持在文本数据中高效执行子字符串及模式匹配搜索,可显著提升 LIKE 等操作的性能
20-
:::
19+
Databend 的 Ngram 索引(Ngram Index)支持高效执行文本数据的子字符串和模式匹配搜索,显著提升 LIKE 及类似操作的性能
20+
:::

docs/cn/sql-reference/10-sql-commands/00-ddl/07-ngram-index/refresh-ngram-index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ sidebar_position: 2
55

66
import FunctionDescription from '@site/src/components/FunctionDescription';
77

8-
<FunctionDescription description="Introduced or updated: v1.2.726"/>
8+
<FunctionDescription description="引入或更新于:v1.2.726"/>
99

1010
import EEFeature from '@site/src/components/EEFeature';
1111

1212
<EEFeature featureName='NGRAM INDEX'/>
1313

14-
从表中刷新现有的 NGRAM 索引。
14+
刷新表上已有的 NGRAM 索引(NGRAM INDEX)
1515

1616
## 语法
1717

@@ -22,7 +22,7 @@ ON [<database>.]<table_name>;
2222

2323
## 示例
2424

25-
以下示例从 `amazon_reviews_ngram` 表中刷新 `idx1` 索引:
25+
以下示例刷新 `amazon_reviews_ngram` 表上的 `idx1` 索引:
2626

2727
```sql
2828
REFRESH NGRAM INDEX idx1 ON amazon_reviews_ngram;

0 commit comments

Comments
 (0)