Question about fulltext search and to_tsvector function - Mailing list pgsql-general

From Mike Christensen
Subject Question about fulltext search and to_tsvector function
Date
Msg-id 48F806FE.4080004@comcast.net
Whole thread Raw
Responses Re: Question about fulltext search and to_tsvector function  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Question about fulltext search and to_tsvector function  (Mike Christensen <imaudi@comcast.net>)
Re: Question about fulltext search and to_tsvector function  (Oleg Bartunov <oleg@sai.msu.su>)
List pgsql-general
Okay this one's driving me crazy.

Should there be any difference between the following queries:

SELECT R.Title FROM Recipes R
WHERE (to_tsvector('english', title || description) @@
plainto_tsquery('Cake'));

and

SELECT R.Title FROM Recipes R
WHERE (to_tsvector('english', description || title) @@
plainto_tsquery('Cake'));


This query should search for the word 'Cake' in either the description
OR the title field, correct?  The order should not matter.  However, in
the first query I get 6 results and in the second I get 9.

Furthermore, if I do:

SELECT R.Title FROM Recipes R
WHERE (to_tsvector('english', title) @@ plainto_tsquery('Cake'));

I get 10 results and if I do:

SELECT R.Title FROM Recipes R
WHERE (to_tsvector('english', title || coalesce(description, '')) @@
plainto_tsquery('Cake'));

I get 7 results.  Shouldn't the first query result in a subset of the
second query?  The first query returns several rows the second one
doesn't return, and vice-versa!  This function is completely confusing me!!

I would greatly appreciate anyone who could explain exactly how this
works.  It's most likely something stupid I'm doing that is the result
of me not getting enough sleep..

Mike

pgsql-general by date:

Previous
From: "Tim Uckun"
Date:
Subject: Re: Question about NOT NULL and default values.
Next
From: "Scott Marlowe"
Date:
Subject: Re: Question about NOT NULL and default values.