问题 使用FREETEXTTABLE为列赋予优先级/权重


我使用SQL Server全文搜索,使用关键字FREETEXTTABLE返回基于几列的结果表,搜索关键字。

现在我有两个我正在搜索的主要列,标题和描述,我想优先选择Title列,因为这很可能会有我的结果,但是Description也可能包含结果但是我希望它给出一个单词的优先级标题超过描述(但我不想使用CONTAINSTABLE,因为这太具体了)。有没有办法使用FREETEXTTABLE给出列权重/优先级?


2916
2017-11-10 19:25


起源



答案:


你需要使用一个带有union的2个查询,提供你自己的'权重',如下所示:

select  [key], sum(rnk) as weightRank
from
        (
            select Rank * 2.0 as rnk, [key] from freetexttable(tableName,Title,'free text string')
            union all
            select Rank * 1.0 as rnk, [key] from freetexttable(tableName,Description,'free text string')
        ) as t
group by [key]

13
2017-11-11 01:26