I imagine the difference is due to the ts_vector type recording different information for the underlying strings.
select to_tsvector('something & another');
to_tsvector
----------------------
'anoth':2 'someth':1
(1 row)
chimera=# select to_tsvector('something and another');
to_tsvector
----------------------
'anoth':3 'someth':1
(1 row)
This leads to quite different search results and my current workaround is to suggest to users to do both searches with an OR. Is this the right solution?