Jag kanske har missförstått men har du övervägt att bara göra det här:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
om användaren anger mer än ett ord, åtskilda av blanksteg, dela upp strängen i ord och ändra frågan till
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...