Sql server 2008 在Sql server中跨多个表搜索相关性
在SQL SERVER 2008中,我面临一个关于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
全文搜索的挑战。
我有两个表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个表格,工会的数量将疯狂增加。这将是太复杂和缓慢以及
那么,有没有其他方法可以减少这种结合呢
我尝试了视图,但无法对其进行全文索引
有什么想法吗。。
谢谢
马库斯