Re: two questions about fulltext searchign / tsvector indexes

From: Vick Khera <vivek(at)khera(dot)org>
To: Jonathan Vanasco <postgres(at)2xlp(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: two questions about fulltext searchign / tsvector indexes
Date: 2014-06-10 12:26:58
Message-ID: CALd+dcdoAzetn6OwX8X70_cW-yO3WFQfN4o9h6OosrQBAM=Pvg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Jun 9, 2014 at 8:55 PM, Jonathan Vanasco <postgres(at)2xlp(dot)com> wrote:
> I can't figure out which one to use. This is on a steadily growing table of around 20MM rows that gets 20-80k new records a day, but existing records are rarely updated.

The question as always is a time-space trade-off. How frequently do
you make the full text search? If you do it frequently, then with a
pre-computed tsv column you save all that time per row of computing
the tsvector on every search. If you do it infrequently, the space
savings (and not needing to maintain that column) may benefit you.

Personally in these days of cheap disks I'd go with the dedicated
column. Given that, you want to just have a GIN index on that one
column, and the query you want, given some plain text string like
"fluffy dog" is this:

select plainto_tsquery('fluffy dog') @@ my_tsv_column;

I always use a trigger on insert and update to maintain the ts_vector
column, so there is no doubt of how it was computed by various
programs.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Kevin Grittner 2014-06-10 13:23:06 Re: two questions about fulltext searchign / tsvector indexes
Previous Message Bhushan Pathak 2014-06-10 10:30:31 Re: PostgreSQL 9.2.4 + CentOS 6.5 64 bit - segfault error in initdb