Sua consulta retorna apenas registros, se A e B relacionado contiverem o texto de pesquisa.
Você não afirma o que não funciona, no entanto.
Por que não LEFT OUTER JOIN nas pesquisas de texto completo e substituir:
SELECT *, (ISNULL(ftTableA.[RANK], 0) + ISNULL(ftTableB.[RANK], 0)) AS total_rank
e
WHERE ftTableA.Key IS NOT NULL OR ftTableB.Key IS NOT NULL