我想在SQL Server 2012的where子句中使用FREETEXT
,但能够根据搜索词的相关性来排序结果。
我知道我可以使用FREETEXTTABLE
,但SQL语句将更多地是JOIN
,而不是WHERE
子句。这对我很重要,因为我需要将FREETEXT
语句与其他逻辑比较结合起来。
渴望的状态是能够做到这样的事情:
SELECT Title
FROM Document
WHERE FREETEXT(Contents, Title, 'Approved Draft') OR (Status = 'Approved Draft')
ORDER BY RANK? DESC
答案 0 :(得分:0)
您必须使用FREETEXTTABLE
才能获得排名。您仍然可以将其与其他逻辑比较结合起来。
以下是如何修改查询的示例。请记住,在Document.Status = 'Approved Draft'
时,您的逻辑将导致0排名,因此您需要决定在这种情况下您想要做什么。
SELECT Document.Title, qFreeText.RANK
FROM Document
LEFT JOIN FREETEXTTABLE(Contents, Title, 'Approved Draft') AS qFreeText
ON Document.ID = qFreeText.KEY
WHERE (Document.Status = 'Approved Draft') OR (qFreeText.KEY IS NOT NULL)
ORDER BY qFreeText.RANK DESC