Ik heb het misschien verkeerd begrepen, maar heb je overwogen om dit gewoon te doen:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
als de gebruiker meer dan één woord invoert, gescheiden door spaties, splitst u de tekenreeks eenvoudig in woorden en wijzigt u de zoekopdracht in
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...