2014-01-29 41 views
0

我想在SQL Server 2012的where子句中使用FREETEXT,但仍然能够按搜索项的相关性排序搜索结果。FREETEXT在SQL Server 2012中进行搜索,按秩排序

我知道我可以使用FREETEXTTABLE,但是SQL语句将更多是JOIN而不是在WHERE子句中。这对我来说很重要,因为我需要将FREETEXT语句与其他逻辑比较结合起来。

期望中的状态是能够做这样的事情:

SELECT Title 
FROM Document 
WHERE FREETEXT(Contents, Title, 'Approved Draft') OR (Status = 'Approved Draft') 
ORDER BY RANK? DESC 

回答

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 
相关问题