Você precisa alterar alguns de seus ANDs para ORs e, em seguida, colocar os ORs entre parênteses.
No momento, você precisa de uma das $vehicle MATCHes e também ambas das correspondências de $palavra-chave. Em vez disso, acho que você deseja exigir qualquer um dos $vehicle ou $palavra-chave corresponde.
Além disso, acho que você pode combinar as correspondências $keyword em uma única chamada MATCH, não é? E eu acho que a verificação LIKE contra T.truck_number é redundante, dado o MATCH que inclui essa coluna. Nesse caso, você poderia escrever essa seção do SQL como:
AND (MATCH( T.truck_number, T.make, T.model, T.engine, T.vin_number,
T.transmission_number, T.comments) AGAINST( '$vehicle' )
OR MATCH( P.part_num, P.part_desc, P.part_ref,M.comments, M.work_done)
AGAINST( '$keywords' ))
E incluo o comentário obrigatório sobre como se proteger contra injeção de SQL escapando do SQL dinâmico que você cria.