2

如何将一条记录的文本字段与 SQL Server 中的所有其他记录进行比较以返回,例如,前 5 条最相关的记录?

我所追求的功能的一个示例是 Wordpress 的各种相关帖子插件,它们生成与当前正在查看的帖子相关的帖子的链接列表。

干杯,伊恩

4

3 回答 3

1

感谢这些回复。我熟悉引用的函数,但我不确定它们是否符合我的需要。例如:

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

我得到了更多的行,但是包含所有三个单词的行的排名似乎并没有明显高于包含 1 个单词的行。

还有什么想法吗?

于 2009-05-20T16:17:32.700 回答
0

您需要使用 CONTAINSTABLE ,这将返回一个可用于排序的 RANK 列。

SELECT TOP 5 [Key] FROM CONTAINSTABLE ([YourFullText],'SomethingToSearch')
ORDER BY [RANK] DESC
于 2009-05-17T17:04:07.443 回答
0

给你,来自优秀的罗伯特凯恩:

http://arcanecode.com/2007/06/28/getting-started-with-sql-server-2005-full-text-searching-part-3-%E2%80%93-using-sql/

于 2009-05-06T15:55:15.330 回答