Search Postgresql Archives

Re: FTS trigger works 1 at a time, but fails with bulk insert script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxx> 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@xxxxxxxxxxx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux