创建文本索引

在以下示例中,可以使用名为 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

    当您在编制了索引的源表中移动或交换分区时,验证目标表是否已存在并且以相同的方式编制了索引。