搜索与二级索引

本页介绍了搜索和次级索引的功能。

在决定是选择搜索索引还是二级索引时,请注意以下几点: 搜索索引应该是全文用例的默认选择, 二级索引应该是所有其他内容的默认选项。通过 下表介绍了每种索引的适用情形。

特征 二级索引 搜索索引
排序顺序 索引按所有索引键列排序 搜索索引最多只能按两个用户控制的 INT64 列进行排序
数组 不支持将数组用作二级索引的键。 搜索索引支持数组索引。一个文档的所有词元位于同一分片中。因此,更改 1 行的事务仅会写入一个索引拆分。
查找 按索引键查找只需要访问一个分块 使用搜索索引的查询通常需要从指定分区的所有分块中读取数据。唯一的例外情况是 Top-k 模式匹配。
多列索引编制 二级索引可以包含多个键列。查询需要按索引键列的前缀查找数据,以便高效执行。 搜索索引可以为多列编制索引。查询可以对已编入索引的列的任何子集指定复杂的逻辑表达式(连接、析取、否定),并且仍然可以高效执行
索引交集 用户可以重写查询以联接多个二级索引。 多个编有索引的列的交集是通过高效的本地锯齿形联接实现的,后跟分布式合并联接(用于合并所有相关分块中的结果)。
读取数据 SQL Query 或 Read API SQL 查询

除了语义之外,用于创建搜索索引的 DDL 语句的语法也不同于用于创建二级索引的 DDL 语法:

  • 索引列与 搜索索引。
  • CREATE SEARCH INDEX 语句的 ON 子句中,TOKENLIST 列的顺序无关紧要。

后续步骤