创建文本索引
在以下示例中,可以使用名为 t_log 的源表执行文本搜索。该源表包含两个列:
-
一个列包含表的主键
-
另一个列包含日志文件信息
必须将投影与源表相关联。使用按主键排序并按哈希 (id) 分段或未分段的投影。可以在源表上定义此投影以及任何其他现有投影。
对希望执行文本搜索的表创建文本索引。
=> CREATE TEXT INDEX text_index ON t_log (id, text);
文本索引包含两列:
-
doc_id 使用源表中的唯一标识符。
-
token 使用来自源表的指定列的文本字符串填充。字词列通过对文本列中的单词进行分词和词干提取获得。
如果您的表已分区,您的文本索引还将包含名为 partition 的第三个列。
=> SELECT * FROM text_index;
token | doc_id | partition
------------------------+--------+-----------
<info> | 6 | 2014
<warning> | 2 | 2014
<warning> | 3 | 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
您一次只能在源表上创建一个文本索引。在未来,您将不必在每次更新或更改源表时重新创建文本索引。
通过在源表上运行的任何操作,您的文本索引将与源表的内容保持同步。这些操作包括但不限于:
-
COPY
-
INSERT
-
UPDATE
-
DELETE
-
DROP PARTITION
-
MOVE_PARTITIONS_TO_TABLE
当您在编制了索引的源表中移动或交换分区时,验证目标表是否已存在并且以相同的方式编制了索引。