tsearch auf 1:n

Hallo.
Ich habe eine Datenbank mit Blog Postings(posts). Zu jedem Posting gibt es n Kommentare(comments).

ALTER TABLE posts ADD COLUMN textsearchable_index_col tsvector;
UPDATE posts SET textsearchable_index_col =  
to_tsvector('english', coalesce(title,'') || coalesce(content,''));

Zusätzlich zum Titel und dem Content des Posts möchte ich noch den Content der Kommentare zu diesem index hinzufügen.

Mein versuch schlägt leider fehl:

UPDATE posts SET textsearchable_index_col =
    (SELECT to_tsvector(p.title) || to_tsvector(p.content) || to_tsvector(c.content)
    FROM posts p JOIN comments c ON c.post_id = p.id
    );

ERROR: more than one row returned by a subquery used as an expression

Kann mir jemand von euch bitte weiterhelfen.
danke!
franz

Du könntest dir mit einem Trigger eine extra Spalte füllen, die sowohl das eine Blogposting wie auch alle Kommentare dazu enthält. Darauf legst du dann den tsearch Index.

So wollte ich es eigentlich machen.
Posts hat die spalte textsearchable_index_col. Dorthin soll alles gespeichert werden.
Nur weiß ich eben nicht wie ich die Abfrage machen muss, damit ich den content aller comments die zu einem Posting gehören in ein Feld schreiben kann.

Du wirst dir eine kleine Funktion schreiben müssen die die Daten zusammensucht. plPgSQL bietet sich hier förmlich an.