Možná jsem to špatně pochopil, ale uvažovali jste o tom, že byste to udělali:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
pokud uživatel zadá více než jedno slovo oddělené mezerami, jednoduše rozdělte řetězec na slova a upravte dotaz na
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...