]> ruin.nu Git - ndwebbie.git/blob - database/search.sql
Bugfix, need the board id on allUnread listing
[ndwebbie.git] / database / search.sql
1 ALTER TABLE forum_posts ADD textsearch tsvector;
2
3 UPDATE forum_posts fp SET textsearch = setweight(to_tsvector(coalesce(ft.subject,'')), 'A') || setweight(to_tsvector(coalesce(u.username,'')), 'B') || setweight(to_tsvector(coalesce(fp.message,'')), 'D') FROM forum_threads ft, users u WHERE fp.ftid = ft.ftid AND u.uid = fp.uid;
4
5 CREATE INDEX forum_posts_textsearch_index ON forum_posts USING gin(textsearch);
6
7 /*CREATE OR REPLACE FUNCTION update_forum_post() RETURNS "trigger"
8 AS $_X$
9         my $query = spi_prepare(q{UPDATE forum_posts fp
10                 SET textsearch = setweight(to_tsvector(coalesce(ft.subject,'')), 'A')
11                         || setweight(to_tsvector(coalesce(u.username,'')), 'B')
12                         || setweight(to_tsvector(coalesce(fp.message,'')), 'D')
13                 FROM forum_threads ft, users u 
14                 WHERE fp.ftid = ft.ftid AND u.uid = fp.uid AND fp.fpid = $1},'int4');
15         spi_exec_prepared($query,$_TD->{new}{fpid});
16         spi_freeplan($query);
17 $_X$
18     LANGUAGE plperl;
19 */
20 CREATE OR REPLACE FUNCTION update_forum_post() RETURNS "trigger"
21 AS $_X$
22 DECLARE
23         rec RECORD;
24 BEGIN
25         SELECT setweight(to_tsvector(coalesce(ft.subject,'')), 'A')
26                         || setweight(to_tsvector(coalesce(u.username,'')), 'B') AS ts
27                 INTO STRICT rec
28                 FROM forum_threads ft, users u 
29                 WHERE NEW.ftid = ft.ftid AND u.uid = NEW.uid;
30         NEW.textsearch := rec.ts
31                 || setweight(to_tsvector(coalesce(NEW.message,'')), 'D');
32         return NEW;
33 END;
34 $_X$
35     LANGUAGE plpgsql;
36
37 CREATE TRIGGER update_forum_post
38     BEFORE INSERT OR UPDATE ON forum_posts
39     FOR EACH ROW
40     EXECUTE PROCEDURE update_forum_post();