Може да съм разбрал погрешно, но обмисляли ли сте просто да направите това:
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$pattern%'
ако потребителят въведе повече от една дума, разделени с интервали, просто разделете низа на думи и променете заявката на
SELECT * FROM customer WHERE
CONCAT(firstname, " ", lastname) LIKE '%$word1%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word2%'
OR CONCAT(firstname, " ", lastname) LIKE '%$word3%'
...