[英]Full-Text Index Comparisons in SQL Server 2005 Express
如何將一個記錄的文本字段與SQL Server中的所有其他記錄進行比較以返回例如最相關的前5個記錄?
我要使用的功能的一個示例是Wordpress的各種Related Posts插件,這些插件會生成指向與當前正在查看的帖子相關的帖子的鏈接列表。
干杯,伊恩
感謝您的答復。 我熟悉引用的函數,但是不確定它們是否可以滿足我的需求。 例如:
SELECT P.id, 'Product' AS Type, FT.rank, C.url + '/' + P.url AS url, longTitle, shortTitle, P.description
FROM Products P
INNER JOIN CONTAINSTABLE (Products, (longTitle, shortTitle), '"my text content"') AS FT ON P.id = FT.[key]
LEFT JOIN Product_Categories PC ON P.id = PC.productID
LEFT Join Categories C ON C.id = PC.categoryID
WHERE [primary] = 1
ORDER BY rank DESC
僅返回帶有確切短語“我的文本內容”的行-我需要返回僅包含“文本”的行,但排位較低。 如果我將查詢更改如下:
SELECT P.id, 'Product' AS Type, FT.rank, C.url + '/' + P.url AS url, longTitle, shortTitle, P.description
FROM Products P
INNER JOIN CONTAINSTABLE (Products, (longTitle, shortTitle), '"my" or "text" or "content"') AS FT ON P.id = FT.[key]
LEFT JOIN Product_Categories PC ON P.id = PC.productID
LEFT Join Categories C ON C.id = PC.categoryID
WHERE [primary] = 1
ORDER BY rank DESC
我得到的行更多,但是包含所有三個單詞的行的排名似乎顯然沒有高於包含其中一個單詞的行的排名。
還有其他想法嗎?
您需要使用CONTAINSTABLE,這將返回一個RANK列,您可以使用該列進行排序。
SELECT TOP 5 [Key] FROM CONTAINSTABLE ([YourFullText],'SomethingToSearch')
ORDER BY [RANK] DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.