2009-02-27 39 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