2010-03-09 60 views
0

我簡單tbl_posts表有三列(ID,名稱,內容)如何設置順序優先於全文搜索(SQL Server)的

我創建了名稱和內容列全文索引。 當我查詢它像:

SELECT * 
FROM dbo.tbl_posts 
WHERE FREETEXT (*, 'search word') 

我想,對於結果的順序將首先由排名列然後我內容下令

回答

1
CREATE FUNCTION PostFreeTextSearch 
    (
    @SearchTerms nvarchar(100) 
    ) 
    RETURNS TABLE 
    AS 
    RETURN 
    (
    SELECT 
    CASE WHEN fttName.[Key] IS NULL THEN fttContent.[Key] ELSE fttName.[Key] END as id, 
    fttName.[RANK] as NameScore, 
    fttContent.[RANK] as ContentScore 

    FROM 
    FREETEXTTABLE(tbl_Posts, (Name), @SearchTerms) fttName 
    FULL OUTER JOIN 
    FREETEXTTABLE(tbl_Posts, (Content), @SearchTerms) fttContent ON fttName.[Key] = fttContent.[Key] 

    WHERE fttName.RANK > 0 OR fttContent.RANK > 0 
    ) 
    GO 
    SELECT * FROM PostFreeTextSearch('sql server')