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@xxxxxxxx> 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 -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general