13.9. GIN 索引类型

有一种索引可以用于加速全文搜索: GIN。 请注意,索引对于全文搜索不是强制性的,但在经常搜索某个列的情况下,索引通常是可取的。

要创建这样的索引,请执行以下操作之一:

CREATE INDEX name ON table USING GIN (column);

创建一个基于 GIN(通用倒排索引)的索引。column必须是tsvector类型。

GIN 索引是更好的文本搜索索引类型。作为倒排索引,每个词(词位)在 其中都有一个索引项,其中有压缩过的匹配位置的列表。多词搜索可以找到 第一个匹配,然后使用该索引移除缺少额外词的行。GIN 索引只存储 tsvector值的词(词位),并且不存储它们的权重标签。因此, 在使用涉及权重的查询时需要一次在表行上的重新检查。

注意GIN索引的构件时间常常可以通过增加maintenance_work_mem来改进。

对大集合分区并正确使用 GIN 索引允许实现带在线更新的快速搜索。分区可以在数据库层面上使用表继承来完成,或者是通过将文档分布在服务器上并收集外部的搜索结果,例如通过外部数据访问。后者是可能的,因为排名函数只使用本地信息。