Вашата заявка връща записи само ако и A, и свързаното B съдържат текста за търсене.
Вие обаче не посочвате какво не работи.
Защо не LEFT OUTER JOIN към търсенията в пълен текст и да не замените:
SELECT *, (ISNULL(ftTableA.[RANK], 0) + ISNULL(ftTableB.[RANK], 0)) AS total_rank
и
WHERE ftTableA.Key IS NOT NULL OR ftTableB.Key IS NOT NULL