Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL Server全文搜索中为列分配不同的权重?_Sql_Full Text Search_Ranking - Fatal编程技术网

如何在SQL Server全文搜索中为列分配不同的权重?

如何在SQL Server全文搜索中为列分配不同的权重?,sql,full-text-search,ranking,Sql,Full Text Search,Ranking,我使用的是SQLServer2008FTS,我希望能够将加权排名集成到我的搜索结果中。但是,我想对搜索词所在的列进行不同的加权。例如,如果我有一个Title列和一个Description列,我希望Title中的匹配项的排名高于Description中的匹配项 这在SQL Server 2008中是否可能?据我所知,我只能为特定术语添加权重,而不能为列位置添加权重。您可以对每列单独使用该函数,然后将权重分配给返回的秩列。不过,我相信我在某个地方读到过,排名栏不一定适用于不同搜索的比较,因此您可能需

我使用的是SQLServer2008FTS,我希望能够将加权排名集成到我的搜索结果中。但是,我想对搜索词所在的列进行不同的加权。例如,如果我有一个Title列和一个Description列,我希望Title中的匹配项的排名高于Description中的匹配项


这在SQL Server 2008中是否可能?据我所知,我只能为特定术语添加权重,而不能为列位置添加权重。

您可以对每列单独使用该函数,然后将权重分配给返回的秩列。不过,我相信我在某个地方读到过,排名栏不一定适用于不同搜索的比较,因此您可能需要进行实验,以确保获得准确的结果。

谢谢,这正是我所担心的。
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;