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

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to