# 67.1.导言
GIN代表广义反向索引。GIN设计用于处理以下情况:要编制索引的项是复合值,而要由索引处理的查询需要搜索复合项中出现的元素值。例如,项目可以是文档,查询可以是搜索包含特定单词的文档。
我们用这个词项目指的是要编制索引的复合值钥匙引用元素值。GIN总是存储和搜索键,而不是项值本身。
GIN索引存储一组(键、发布列表)对,其中倒排表是一组出现键的行ID。同一行ID可以出现在多个过账列表中,因为一个项目可以包含多个关键字。每个键值只存储一次,因此对于同一个键多次出现的情况,GIN索引非常紧凑。
GIN是广义的,因为GIN访问方法代码不需要知道它加速的特定操作。相反,它使用为特定数据类型定义的自定义策略。该策略定义了如何从索引项和查询条件中提取键,以及如何确定查询中包含某些键值的行是否真正满足查询。
GIN的一个优点是,它允许由数据类型领域的专家(而不是数据库专家)使用适当的访问方法开发自定义数据类型。这与使用GiST的优点大致相同。
PostgreSQL中的GIN实现主要由Teodor Sigaev和Oleg Bartunov维护。他们的网站上有更多关于杜松子酒的信息网站 (opens new window).