Re: FTS phrase searches

From: Glenn Maynard <glenn(at)zewt(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: FTS phrase searches
Date: 2010-12-19 08:13:46
Message-ID: AANLkTinRpz=SQj2k0bJ5P3K=y_2QODm+G7QkT_iO1EEa@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I guess no response means it's not possible. I ended up doing a
manual substring match for quoted strings, but that's a poor hack.
Maybe I'll take a poke at implementing something like
tsvector_contains_phrase; it seems like a natural extension of what's
in there now.

On Mon, Nov 1, 2010 at 4:35 PM, Glenn Maynard <glenn(at)zewt(dot)org> wrote:
> How are adjacent word searches handled with FTS?  tsquery doesn't do
> this, so I assume this has to be done as a separate filter step, eg.:
>
>  # "large house" sales
>  SELECT * FROM data WHERE fts @@ to_tsquery('large & house & sales')
> AND tsvector_contains_phrase(fts, to_tsvector('large house')));
>
> to do an indexed search for "large & house & sales" and then to narrow
> the results to where "large house" actually appears as a phrase (eg.
> adjacent positions at the same weight).  I can't find any function to
> do that, though.  (Presumably, it would return true if all of the
> words in the second tsvector exist in the first, with the same
> positions relative to each other.)
>
> "tsvector <@ tsvector" seems logical, but isn't supported.
>
> This isn't as simple as using LIKE, since that'll ignore stemming,
> tokenization rules, etc.  If the language rules allow this to match
> "larger house" or "large-house", then a phrase restriction should,
> too.  It's also painful when the FTS column is an aggregate of several
> other columns (eg. title and body), since a LIKE match needs to know
> that and check all of them separately.
>
> Any hints?  This is pretty important to even simpler search systems.

--
Glenn Maynard

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jasen Betts 2010-12-19 09:33:49 Re: Getting number of affected rows after DELETE FROM
Previous Message vvoody 2010-12-19 03:23:30 Have any tricks not to recreate a standby server to switch to the former primary?