|
| 1 | +--- |
| 2 | +title: 创建倒排索引 |
| 3 | +sidebar_position: 1 |
| 4 | +--- |
| 5 | + |
| 6 | +import FunctionDescription from '@site/src/components/FunctionDescription'; |
| 7 | + |
| 8 | +<FunctionDescription description="引入或更新版本: v1.2.405"/> |
| 9 | + |
| 10 | +import EEFeature from '@site/src/components/EEFeature'; |
| 11 | + |
| 12 | +<EEFeature featureName='倒排索引'/> |
| 13 | + |
| 14 | +在 Databend 中创建一个新的倒排索引。 |
| 15 | + |
| 16 | +## 语法 |
| 17 | + |
| 18 | +```sql |
| 19 | +CREATE [ OR REPLACE ] INVERTED INDEX [IF NOT EXISTS] <index> |
| 20 | + ON [<database>.]<table>( <column>[, <column> ...] ) |
| 21 | + [ <IndexOptions> ] |
| 22 | +``` |
| 23 | + |
| 24 | +| 参数 | 描述 | |
| 25 | +| ---------------------- | ---------------------------------------------------------------------------------- | |
| 26 | +| `[ OR REPLACE ]` | 可选参数,指示如果索引已存在,则将其替换。 | |
| 27 | +| `[ IF NOT EXISTS ]` | 可选参数,指示仅在索引不存在时创建。 | |
| 28 | +| `<index>` | 要创建的倒排索引的名称。 | |
| 29 | +| `[<database>.]<table>` | 包含要创建索引的列的数据库和表的名称。 | |
| 30 | +| `<column>` | 要包含在索引中的列的名称。可以为同一表创建多个索引,但每个列在索引中必须是唯一的。 | |
| 31 | +| `<IndexOptions>` | 可选的索引选项,指定如何构建倒排索引。 | |
| 32 | + |
| 33 | +### 索引选项 |
| 34 | + |
| 35 | +```sql |
| 36 | +IndexOptions ::= |
| 37 | + TOKENIZER = 'english' | 'chinese' |
| 38 | + FILTERS = 'english_stop' | 'english_stemmer' | 'chinese_stop' |
| 39 | + INDEX_RECORD = 'position' | 'basic' | 'freq' |
| 40 | +``` |
| 41 | + |
| 42 | +- `TOKENIZER` 指定文本如何被分割以进行索引。支持 `english`(默认)和 `chinese` 分词器。 |
| 43 | + |
| 44 | +- `FILTERS` 定义术语过滤的规则: |
| 45 | + |
| 46 | + - 可以指定多个过滤器,用逗号分隔,例如 `FILTERS = 'english_stop,english_stemmer'`。 |
| 47 | + - 默认添加一个将单词转换为小写字母的过滤器。 |
| 48 | + |
| 49 | +| FILTERS | 描述 | |
| 50 | +| ----------------- | --------------------------------------------------------------------------------------- | |
| 51 | +| `english_stop` | 移除英语停用词,如 "a", "an", "and" 等。 | |
| 52 | +| `english_stemmer` | 将同一单词的不同形式映射到共同的一个词。例如,"walking" 和 "walked" 将被映射到 "walk"。 | |
| 53 | +| `chinese_stop` | 移除中文停用词,目前仅支持移除中文标点符号。 | |
| 54 | + |
| 55 | +- `INDEX_RECORD` 决定索引数据存储的内容: |
| 56 | + |
| 57 | +| INDEX_RECORD | 默认? | 描述 | |
| 58 | +| ------------ | ------ | ----------------------------------------------------------------------- | |
| 59 | +| `position` | 是 | 存储 DocId、词频和位置,占用空间最多,提供更好的评分,并支持短语查询。 | |
| 60 | +| `basic` | 否 | 仅存储 DocId,占用空间最小,但不支持如 "brown fox" 这样的短语搜索。 | |
| 61 | +| `freq` | 否 | 存储 DocId 和词频,占用中等空间,不支持短语查询,但可能提供更好的评分。 | |
| 62 | + |
| 63 | +## 示例 |
| 64 | + |
| 65 | +```sql |
| 66 | +-- 为表 'user_comments' 中的 'comment_text' 列创建倒排索引 |
| 67 | +CREATE INVERTED INDEX user_comments_idx ON user_comments(comment_text); |
| 68 | + |
| 69 | +-- 使用中文分词器创建倒排索引 |
| 70 | +-- 如果未指定分词器,默认使用英语 |
| 71 | +-- 过滤器为 `english_stop`, `english_stemmer` 和 `chinese_stop` |
| 72 | +-- 索引记录为 `basic` |
| 73 | +CREATE INVERTED INDEX product_reviews_idx ON product_reviews(review_text) TOKENIZER = 'chinese' FILTERS = 'english_stop,english_stemmer,chinese_stop' INDEX_RECORD='basic'; |
| 74 | + |
| 75 | +-- 为表 'customer_feedback' 中的 'comment_title' 和 'comment_body' 列创建倒排索引 |
| 76 | +-- SHOW CREATE TABLE 的输出包括创建的倒排索引的信息 |
| 77 | +CREATE INVERTED INDEX customer_feedback_idx ON customer_feedback(comment_title, comment_body); |
| 78 | + |
| 79 | +SHOW CREATE TABLE customer_feedback; |
| 80 | + |
| 81 | +┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ |
| 82 | +│ Table │ Create Table │ |
| 83 | +├───────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ |
| 84 | +│ customer_feedback │ CREATE TABLE customer_feedback (\n comment_title VARCHAR NULL,\n comment_body VARCHAR NULL,\n SYNC INVERTED INDEX customer_feedback_idx (comment_title, comment_body)\n) ENGINE=FUSE │ |
| 85 | +└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
| 86 | +``` |
0 commit comments