Re: FTS trigger works 1 at a time, but fails with bulk insert script - Mailing list pgsql-general

From Malik Rumi
Subject Re: FTS trigger works 1 at a time, but fails with bulk insert script
Date
Msg-id CAKd6oByX51Y4EzHKVdLESxViLssiqvK6HZvN8rK=31ksptTg6Q@mail.gmail.com
Whole thread Raw
In response to Re: FTS trigger works 1 at a time, but fails with bulk insert script  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: FTS trigger works 1 at a time, but fails with bulk insert script  (Adrian Klaver <adrian.klaver@aklaver.com>)
Re: FTS trigger works 1 at a time, but fails with bulk insert script  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general
1. This code is entry_search_vector_trigger(), one of 3 trigger functions based on the Django model that created the site.
2. So this is the trigger definition (as far as I know) and it is on the Entry table. There is also a Tag table and the Tags intersection table.
3. Uhh, I'm not sure. I assume this is it, that when a new entry is posted, the function that parses the entry into searchable text and indexes the words is called. But I can tell you I got this code from this blog post: blog.lotech.org/postgres-full-text-search-with-django.html. I asked the author about this issue. He said he wasn't sure wthout debugging if it was something he left out or something I did wrong.
4. Postgresql 9.4. Yea, I know, I should upgrade...

“None of you has faith until he loves for his brother or his neighbor what he loves for himself.”


On Tue, Oct 2, 2018 at 6:27 PM Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 10/2/18 10:34 AM, Malik Rumi wrote:
> I have set up Postgres FTS on a Django/Python web site, and it works as
> expected except for this one thing. When I wrote a script to bulk insert
> legacy docs, the script works fine but the FTS trigger does not fire. I
> have to go back and open each document one at a time to get them indexed.
>
> What am I missing to make this work? Thanks.

Have no idea as there is not enough information.

To begin with:

1) What is code below?

2) What is the trigger definition and on what table?

3) What is the function the trigger is calling?

4) For good measure what version of Postgres?

>
>              BEGIN
>                SELECT setweight(to_tsvector(NEW.title), 'A') ||
>                       setweight(to_tsvector(NEW.content), 'B') ||
>                       setweight(to_tsvector(NEW.category), 'D') ||
>                       setweight(to_tsvector(COALESCE(string_agg(tag.tag,
> ', '), '')), 'C')
>                INTO NEW.search_vector
>                FROM ktab_entry AS entry
>                  LEFT JOIN ktab_entry_tags AS entry_tags ON
> entry_tags.entry_id = entry.id <http://entry.id>
>                  LEFT JOIN ktab_tag AS tag ON tag.id <http://tag.id> =
> entry_tags.tag_id
>                WHERE entry.id <http://entry.id> = NEW.id
>                GROUP BY entry.id <http://entry.id>, category;
>                RETURN NEW;
>              END;
>
>
> */“None of you has faith until he loves for his brother or his neighbor
> what he loves for himself.”/*


--
Adrian Klaver
adrian.klaver@aklaver.com

pgsql-general by date:

Previous
From: "Phil Endecott"
Date:
Subject: RE: Why the index is not used ?
Next
From: Adrian Klaver
Date:
Subject: Re: FTS trigger works 1 at a time, but fails with bulk insert script