Potrei aver frainteso, ma hai pensato di fare solo questo:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
se l'utente inserisce più di una parola, separate da spazi bianchi, dividere semplicemente la stringa in parole e modificare la query in
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...