3 つの列 (id、name、content)を持つ単純なtbl_postsテーブルがあります。
名前列とコンテンツ列のフルテキスト インデックスを作成しました。次のようにクエリすると:
SELECT *
FROM dbo.tbl_posts
WHERE FREETEXT ( *, 'search word' )
結果の順序は、最初に列名のランク順に並べられ、次にコンテンツの順に並べられるようにしたい
3 つの列 (id、name、content)を持つ単純なtbl_postsテーブルがあります。
名前列とコンテンツ列のフルテキスト インデックスを作成しました。次のようにクエリすると:
SELECT *
FROM dbo.tbl_posts
WHERE FREETEXT ( *, 'search word' )
結果の順序は、最初に列名のランク順に並べられ、次にコンテンツの順に並べられるようにしたい
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')