2009-02-27 57 views
0

我在我的sql查询中使用FULLTEXT来搜索记录。如何先在SQL中使用FULLTEXT显示相关记录?

 SELECT * FROM (SELECT d.DataId, (SELECT [Name] FROM Category WHERE CategoryId = d.CategoryId) AS 'Category', d.Description, d.CompanyName, d.City, d.CategoryId, 
       d.CreatedOn, d.Rank, d.voteCount, d.commentCount, d.viewCount 
     FROM Data d 
       INNER JOIN Keyword k 
        ON d.DataId = k.DataId 
     WHERE FREETEXT(k.Keyword, @SearchQ) AND [email protected] AND d.IsSearch=1 AND d.IsApproved=1 

当我寻找rockstone酒店,我有我的表中相同名称的记录,但它首先显示其他一些记录,然后显示“rockstone酒店的”记录在3位。为什么发生这种情况以及如何改善这种情况?

我使用SQL Server 2005

感谢

回答

1

你没有ORDER BY子句,这将释放数据库,以任何顺序返回记录。通常,它在处理where子句时遇到它们的顺序,因此很容易相信数据库使用的是“自然”顺序。如果您想要特定的命令,您需要添加一个Order By子句,该子句将使用您创建的一些评分方法,或者您必须在接收记录的程序中对它们进行排序。

(我会猜你是拉其他记录也包含搜索条件,只需更远的文本字段)

看到这里使用排名来订购的记录的例子:SQL Server Freetext match - how do I sort by relevance的等级列由文本匹配调用生成。

+0

我们不能与搜索关键字相关性的基础上,对记录进行排序? – Prashant 2009-02-27 17:08:44

相关问题