我正面临一个挑战Full Text Search in SQL SERVER 2008.
我有 2 个表 A 和 B ,它们各自的列 a, b 。现在,我想对所有这 3 个表进行全文搜索,并具有组合搜索相关性。
这意味着,如果在所有两个表中都找到了搜索文本,则它的排名应该更高。如果它仅在 col 中找到。表 A 的 a,如果只在 col 中找到,则应该排在第二位。表B的b,那么它应该排在第三位
如何才能做到这一点。
像这样的查询,
SELECT A.a, B.b, C.c, a.Title, akt.[Rank] + bkt.[Rank] /2 AS [Rank]
FROM PublicationSearch b
INNER JOIN Publication a ON a.Id = b.Id
INNER JOIN FREETEXTTABLE(A, a, 'search text') akt ON a.Id = akt.[Key]
INNER JOIN FREETEXTTABLE(B, b, 'search text') bkt ON b.Id = bkt.[Key]
ORDER BY [Rank] DESC
发生的事情是,如果搜索结果存在于两个具有适当排名的表中,它会向我显示搜索结果。
但是,如果搜索结果只在一个表中,则它不会显示。如果我申请 a LEFT JOIN
,那么记录即将到来,但带有RANK = Null
.