Jeg har måske misforstået, men har du overvejet bare at gøre dette:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
hvis brugeren indtaster mere end ét ord, adskilt af mellemrum, opdele strengen i ord og ændre forespørgslen til
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...