我正在使用 SQL Server 2008 FTS,我希望能够将加权排名集成到我的搜索结果中。但是,我想对在不同的搜索词中找到的列进行加权。例如,如果我有一个 Title 列和一个 Description 列,我希望 Title 中的匹配项排名高于 Description 中的匹配项。
这在 SQL Server 2008 中可行吗?据我所知,我只能为特定术语添加权重,而不是列位置。
我正在使用 SQL Server 2008 FTS,我希望能够将加权排名集成到我的搜索结果中。但是,我想对在不同的搜索词中找到的列进行加权。例如,如果我有一个 Title 列和一个 Description 列,我希望 Title 中的匹配项排名高于 Description 中的匹配项。
这在 SQL Server 2008 中可行吗?据我所知,我只能为特定术语添加权重,而不是列位置。
您可以对每一列单独使用FREETEXTTABLE函数,然后将您的权重分配给返回的 Rank 列。我相信我在某处读到过,虽然排名列不一定适用于跨搜索的比较,但您可能需要进行试验以确保获得准确的结果。
SELECT title, filename, sum(relevance)
FROM (
SELECT title, filename, 10 AS relevance FROM page WHERE title like ‘%about%’
UNION
SELECT title, filename, 7 AS relevance FROM page WHERE filename like ‘%about%’
UNION
SELECT title, filename, 5 AS relevance FROM page WHERE keywords like ‘%about%’
UNION
SELECT title, filename, 2 AS relevance FROM page WHERE description like ‘%about%’
) results
GROUP BY title, filename
ORDER BY relevance desc;