Re: FTS phrase searches - Mailing list pgsql-general

From Glenn Maynard
Subject Re: FTS phrase searches
Date
Msg-id AANLkTinRpz=SQj2k0bJ5P3K=y_2QODm+G7QkT_iO1EEa@mail.gmail.com
Whole thread Raw
In response to FTS phrase searches  (Glenn Maynard <glenn@zewt.org>)
Responses Re: FTS phrase searches  (Oleg Bartunov <oleg@sai.msu.su>)
List 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@zewt.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

pgsql-general by date:

Previous
From: vvoody
Date:
Subject: Have any tricks not to recreate a standby server to switch to the former primary?
Next
From: Jasen Betts
Date:
Subject: Re: Getting number of affected rows after DELETE FROM