I'm implementing a solution that uses PostgreSQL's full text search capabilities and I have come across a particular set of results for ts_rank that don't seem to make sense according to the documentation.
While the documentation doesn't come out and say, my interpretation is that ts_rank assumes there is a match in the first place, and by implication is undefined/unspecified if there is no match.
select to_tsvector('search for a text box') @@ to_tsquery('circle | lot <-> box'); ?column? ---------- f (1 row)