Su consulta solo devuelve registros, si tanto A como B relacionado contienen el texto de búsqueda.
Sin embargo, no indica lo que no funciona.
¿Por qué no LEFT OUTER JOIN en las búsquedas de texto completo y reemplaza:
SELECT *, (ISNULL(ftTableA.[RANK], 0) + ISNULL(ftTableB.[RANK], 0)) AS total_rank
y
WHERE ftTableA.Key IS NOT NULL OR ftTableB.Key IS NOT NULL