說我有以下僞模式,其中1-many
關係使用的Postgres陣列建模:Postgres的用複合類型的陣列FTS
CREATE TYPE quotes AS
(
text CHARACTER VARYING,
is_direct CHARACTER VARYING
);
CREATE TABLE posts
(
body CHARACTER VARYING,
q quotes[]
);
insert into posts(body,q) VALUES('ninjas rock',ARRAY[ ROW('I AGREE',True)::quotes, ROW('I DISAGREE',FALSE)::quotes ]);
我的第一個問題是:?要如何進行一個選擇,以從整個陣列中過濾掉quote->text
。
這工作:
test=# select body, q[1].text from posts;
body | text
--------------+---------
hassan rocks | I AGREE
(1 row)
但這並不(注意,整個複合型已被檢索):
test=# select body, (q).text from posts;
body | text
--------------+-------------------------------------------------
hassan rocks | {"(\"I AGREE\",true)","(\"I DISAGREE\",false)"}
(1 row)
爲了彌補到我真正的問題,我會怎樣創建一個杜松子酒或要點(有或沒有to_tsvector
)索引,其中包括帖子正文的文本以及所有的報價文本?我不想使用索引的額外列方法作爲觸發器make me sad。
目前我的模式代表帖子和報價爲1-many
關係,但是我認爲如果postgres支持我正在嘗試做的事情,它會大大簡化事情。