Boolean mode has no fifty per cent threshold and no meaningful relevance score, so results come back in whatever order the index produced them.
SELECT id, MATCH(name, description) AGAINST('+desk +lamp' IN BOOLEAN MODE) AS score
FROM products
WHERE MATCH(name, description) AGAINST('+desk +lamp' IN BOOLEAN MODE)
ORDER BY score DESC;
-- the score is a term-frequency sum, not a ranking. two
-- documents with the same terms score identically
-- regardless of length or field.
The scoring being a bare term-frequency count is why a MySQL full-text search feels worse than a search engine even when it returns the right documents — there is no field weighting, no length normalisation and no way to say the name matters more than the description. Adding a secondary sort on something meaningful is the usual patch and is not the same thing as relevance.