SQL Server FTS : Ranking is a bit strange

标签 sql tsql sql-server-2008 full-text-search

我在我的网站中使用 SQL Server 2008 的全文搜索引擎。我有一个搜索 SP,它显示根据排名排序的结果。

我将搜索字符串分解并像这样将其传递给 FTS 查询引擎(搜索字符串是“测试搜索”:

("*test*" ~ "*search*") OR ("*test*" OR "*search*").

如果结果行具有“测试搜索”行,而其他行具有“测试其他内容”。后者排名更高。

我不明白这是怎么回事——显然“测试搜索”这个词更接近。我认为这与我将测试字符串传递给 FTS 的方式有关。任何见解?建议?

最佳答案

经过 OR 运算的所有搜索词都具有相同的权重。为了提高短语“test NEAR search”的排名,您必须指定更大的权重。

例子

SELECT 
  Srch.*
FROM 
  CONTAINSTABLE
  (
    MyTable, 
    SearchColumn, 
    -- must specify a weight if one phrase is more important
    'ISABOUT(test ~ search weight(.7), test weight(.1), search weight(.2))', 
    LANGUAGE 1033, -- english
    100            -- TOP N RANK
  ) Srch

关于SQL Server FTS : Ranking is a bit strange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343899/

相关文章:

mysql - 当连接表为空时,JOIN SQL 不起作用

sql - 跨服务器SQL

sql - 推荐的方法如何修改生产 SQL 数据库的架构?

c# - 如何在sql查询中使用逗号分隔的动态字符串?

sql - SSRS 正在锁定表

sql - Oracle PL/SQL 触发器 : Reset column value automatically after an update statement

java - 无法创建外键

sql - 使用开始日期和结束日期将日期分割为时间间隔

sql - 在更新语句中使用表值函数

sql - 如何在没有主键或 ID 字段的表中查找重复项?