Sql server 2008 在Sql server中跨多个表搜索相关性

Sql server 2008 在Sql server中跨多个表搜索相关性,sql-server-2008,full-text-search,ranking,Sql Server 2008,Full Text Search,Ranking,在SQL SERVER 2008中,我面临一个关于全文搜索的挑战。 我有两个表A和B,分别有A列和B列。 现在,我想对这三个表进行全文搜索,并结合搜索相关性 这意味着,如果在所有两个表中都找到了搜索文本,那么它的排名应该更高。 如果只在表a的a列中找到,则应排在第二位 如果只在表b的b列中找到,则应排在第三位 如何做到这一点 这样的疑问, SELECT A.a, B.b, C.c, a.Title, akt.[Rank] + bkt.[Rank] /2 AS [Rank] FROM P

在SQL SERVER 2008中,我面临一个关于
全文搜索的挑战。

我有两个表A和B,分别有A列和B列。 现在,我想对这三个表进行全文搜索,并结合搜索相关性

这意味着,如果在所有两个表中都找到了搜索文本,那么它的排名应该更高。 如果只在表a的a列中找到,则应排在第二位 如果只在表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
发生的是,如果搜索结果存在于两个具有适当排名的表中,它将显示搜索结果

但是,如果搜索结果仅在一个表中,则不会显示。
如果我应用一个
左连接
,那么记录就会出现,但是如果
RANK=Null
,选择a.a,B.B,akt.[RANK]+bkt.[RANK]/2作为[RANK] 从B到B a.Id=b.Id上的内部联接发布a 内部连接FREETEXTTABLE(A,A,‘搜索文本’)在A上的akt。Id=akt。[键] 内部连接FREETEXTTABLE(B,B,'搜索文本')B上的bkt。Id=bkt。[键]

按[Rank]DESC排序

联合

选择A.A,空为B.B,akt.[Rank]为[Rank] 从A 内部连接FREETEXTTABLE(A,A,‘搜索文本’)在A上的akt。Id=akt。[键]

联合

选择null作为A.A、B.B、bkt。[Rank]作为[Rank] 从B到B 内部连接FREETEXTTABLE(A,A,‘搜索文本’)在A上的akt。Id=akt。[键]

上面的查询用于在两个表中搜索记录(使用排名)。 第一个查询:当搜索文本位于两个表的两列中时,只显示那些记录

第二个查询:仅搜索文本仅在表a的a列中的记录

第三个查询:仅搜索文本仅在表b的b列中的记录

我的问题是,如果我必须搜索4到5个表格,工会的数量将疯狂增加。这将是太复杂和缓慢以及

那么,有没有其他方法可以减少这种结合呢 我尝试了视图,但无法对其进行全文索引

有什么想法吗。。 谢谢 马库斯