我在我的网站中使用 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/