SELECT A.a, B.b, akt.[Rank] + bkt.[Rank] /2 AS [Rank]
FROM B 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
UNION
SELECT A.a, null as B.b, akt.[Rank] as [Rank]
FROM A a
INNER JOIN FREETEXTTABLE(A, a, 'search text') akt ON a.Id = akt.[Key]
UNION
SELECT null as A.a, B.b, bkt.[Rank] as [Rank]
FROM B b
INNER JOIN FREETEXTTABLE(A, a, 'search text') akt ON a.Id = akt.[Key]
以上查詢用於跨兩個表搜索記錄(使用排名)。使用跨多個表的全文搜索搜索記錄
第一個查詢:只有那些記錄顯示在兩個表格的兩列中的搜索文本中。
第二個查詢:只有那些記錄,SEARCHTEXT僅在列的表的
第三個查詢:只有那些記錄,SEARCHTEXT僅列B表B中
我的問題是:如果我必須搜索4或5個表格,聯合會的數量會瘋狂增加。它也會太複雜和緩慢。
那麼,有沒有其他方法可以減少這些聯盟? 我試過了Views,但是它們不能被全文索引。
謝謝雨,這是工作,但排名僅來爲那些同時在列的記錄,對於其他人來說,排名= NULL – Marcus25 2012-07-27 07:24:18
是,排名將是無效的。那就是爲什麼我告訴你用套子來計算等級。請顯示您正在使用的確切腳本,然後我會檢查。 – Narendra 2012-07-27 07:33:52