CREATE TEXT INDEX

创建用于执行文本搜索的文本索引。如果表中的数据已分区,则文本索引中会显示一个额外的列用于显示分区。

语法

CREATE TEXT INDEX [[database.]schema.]txtindex-name
 ON [schema.]source-table (unique-id, text-field [, column-name,...])
 [STEMMER {stemmer-name(stemmer-input-data-type)| NONE}]
 [TOKENIZER tokenizer-name(tokenizer-input-data-type)];

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

如果未指定架构,系统将在默认架构中创建表。

txtindex‑name
文本索引名称。
source‑table
要索引的源表。
unique‑id
源表中包含唯一标识符的列的名称。允许任何数据类型。该列必须是源表中的主键。
text‑field
源表中包含文本字段的列的名称。有效的数据类型为:
  • CHAR

  • VARCHAR

  • LONG VARCHAR

  • VARBINARY

  • LONG VARBINARY

允许 null 值。

column‑name
要作为附加列包含的一列或多列的名称。
stemmer‑name
词干分析器的名称。
stemmer‑input‑data‑type
stemmer-name 函数的输入数据类型。
tokenizer‑name
指定分词器的名称。
tokenizer‑input‑data‑type
此值为 tokenizer-name 函数的输入数据类型。可以接受任意数量的实参。

如果使用了 Vertica 分词器,则可以省略此参数。

特权

索引可自动继承其父表的查询权限。将允许表所有者和 dbadmin 创建和/或修改索引。

要求

  • 要求将具有唯一标识符的一列设置为主键。

  • 源表必须具有关联的投影,并且必须按主键进行排序和分段。

示例

以下示例显示如何使用 CREATE TEXT INDEX 语句在表 t_log 上创建附加有未索引列的文本索引:

=> CREATE TEXT INDEX t_log_index ON t_log (id, text, day_of_week);
CREATE INDEX
=> SELECT * FROM t_log_index;
        token          | doc_id | day_of_week
-----------------------+--------+-------------
'catalog               |      1 | Monday
'dbadmin'              |      2 | Monday
2014-06-04             |      1 | Monday
2014-06-04             |      2 | Monday
2014-06-04             |      3 | Monday
2014-06-04             |      4 | Monday
2014-06-04             |      5 | Monday
2014-06-04             |      6 | Monday
2014-06-04             |      7 | Monday
2014-06-04             |      8 | Monday
45035996273704966      |      3 | Tuesday
45035996273704968      |      4 | Tuesday
<INFO>                 |      1 | Tuesday
<INFO>                 |      6 | Tuesday
<INFO>                 |      7 | Tuesday
<INFO>                 |      8 | Tuesday
<WARNING>              |      2 | Tuesday
<WARNING>              |      3 | Tuesday
<WARNING>              |      4 | Tuesday
<WARNING>              |      5 | Tuesday

...

(97 rows)

以下示例显示了从已分区的源表创建的文本索引 tpart_index:

=> SELECT * FROM tpart_index;
         token          | doc_id | partition
------------------------+--------+-----------
 0                      |      4 |      2014
 0                      |      5 |      2014
 11:00:49.568           |      4 |      2014
 11:00:49.568           |      5 |      2014
 11:00:49.569           |      6 |      2014
 <INFO>                 |      6 |      2014
 <WARNING>              |      4 |      2014
 <WARNING>              |      5 |      2014
 Database               |      6 |      2014
 Execute:               |      6 |      2014
 Object                 |      4 |      2014
 Object                 |      5 |      2014
 [Catalog]              |      4 |      2014
 [Catalog]              |      5 |      2014
 'catalog               |      1 |      2013
 'dbadmin'              |      2 |      2013
 0                      |      3 |      2013
 11:00:49.568           |      1 |      2013
 11:00:49.568           |      2 |      2013
 11:00:49.568           |      3 |      2013
 11:00:49.570           |      7 |      2013
 11:00:49.571           |      8 |      2013
 45035996273704966      |      3 |      2013

...

(89 rows)

另请参阅