В настоящее время я делаю что-то похожее на следующее:
SELECT
PD.pid,
PD.name,
PD.modelnumber
FROM (
SELECT
(
COALESCE(ctP.[RANK], -1)
+
COALESCE(ctPT.[RANK], -1)
) AS [RANK],
P.pid,
PT.name,
P.modelnumber
FROM Product AS P
INNER JOIN ProductTranslation AS PT
ON PT.pid = P.pid
OUTER APPLY (
SELECT TOP 1
ctP.[KEY],
ctP.[RANK]
FROM CONTAINSTABLE(
Product,
*,
@Query
) AS ctP
WHERE ctP.[KEY] = P.pid
)
OUTER APPLY (
SELECT TOP 1
ctPT.[KEY],
ctPT.[RANK]
FROM CONTAINSTABLE(
ProductTranslation,
*,
@Query
) AS ctPT
WHERE ctPT.[KEY] = P.pid
)
WHERE
(
ctP.[KEY] IS NOT NULL
OR
ctPT.[KEY] IS NOT NULL
)
) AS PD
ORDER BY PD.[RANK] DESC