日期:2014-05-18  浏览次数:20520 次

各位大侠帮帮我吧(关于SQL SERVER全文索引)
我现在输入关键字   "金钻   硬盘 ",用FREETEXT进行全文搜索后得到的记录顺序如下:
ID     值
1       三星硬盘...
2       移动硬盘...
3       金钻硬盘...
4       黄金钻石...
这与我期望得到的结果有很大的差别,我希望得到的记录顺序是先匹配 "金钻硬盘 "然后再匹配 "金钻 "最后匹配 "硬盘 "
我试着给他们加上不同的权值,但得到的顺序还是一样的,
各位大侠给俺说说这是怎么回事,洗耳恭听,谢谢!

------解决方案--------------------
精确查找用
select id,value
form tb
where CONTAINS(value, ' "*金钻* " and "*硬盘* " ')
模糊查找用
select id,value
form tb
where FREETEXT(value, '金钻 硬盘 ')
加权运算可用
select a.* from tb a inner join
(
select [key] from containstable(tb,value, 'ISABOUT(金钻 weight(.9),硬盘 weight(.8) ')
) b on a.id=b.key order by b.rank desc
------解决方案--------------------
可參考
G. 使用 CONTAINS 和 <weighted_term>
以下示例将搜索包含 performance、comfortable 或 smooth 等词的所有产品名称,并且给定每个词的不同加权。

USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'ISABOUT (performance weight (.8),
comfortable weight (.4), smooth weight (.2) ) ' );
GO