繁体   English   中英

SQL Server 2005 Express中的全文本索引比较

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM