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

问题描述 投票:0回答:2

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

现在我正在搜索两个主要列,标题和描述,我想优先考虑标题列,因为这很可能有我的结果,但描述也可能包含结果,但我希望它优先考虑一个单词标题高于描述(但我不想使用 CONTAINSTABLE,因为这太具体了)。有没有办法使用 FREETEXTTABLE 赋予列权重/优先级?

sql-server full-text-search
2个回答
16
投票

您需要使用 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]

0
投票

我使用计算字段将标题“加倍”:

ALTER TABLE tableName ADD TitleX2 AS (Title + ' ' + Title)

select Rank as rnk, [key] from freetexttable(tableName,(TitleX2, Description), 'free text string')
© www.soinside.com 2019 - 2024. All rights reserved.