0

我有以下自定义类型:

CREATE TYPE param_range AS (  
    param smallint,
    range int4range
);  

下表:

CREATE TABLE test4
(
    id serial NOT NULL,
    geo point,
    ext param_range[]
)

以下指标:

CREATE INDEX ix_test4_geo ON test4 USING GIST ((geo));
CREATE INDEX ix_test4_ext on test4 USING GIN (ext);

GIN 索引需要自定义类型的运算符/函数。我该怎么做呢?

4

1 回答 1

2

GIN 索引不仅需要自定义运算符。它需要整个家族的运营商。基本上你需要:

  1. 请参阅有关 GIN opclass 的文档。

  2. 编写一组 IMMUTABLE 函数来处理这些问题。

  3. 根据这些函数编写一组运算符。

  4. 将它们绑定在一个自定义操作符类中。

这不是一项简单的、少量的工作。它需要相当多的时间(在你的类型的上下文中,“重叠”是什么意思?”所以你需要在设计阶段花费相当多的时间。

基本上,如果您想要 GIST/GIN 支持,您设计的自定义类型不仅用于存储,还用于操作目的。这是一个项目。

于 2013-11-02T12:39:42.210 回答