我现在输入关键字 "金钻 硬盘",用FREETEXT进行全文搜索后得到的记录顺序如下:
ID 值
1 三星硬盘...
2 移动硬盘...
3 金钻硬盘...
4 黄金钻石...
这与我期望得到的结果有很大的差别,我希望得到的记录顺序是先匹配"金钻硬盘"然后再匹配"金钻"最后匹配"硬盘"
我试着给他们加上不同的权值,但得到的顺序还是一样的,
各位大侠给俺说说这是怎么回事,洗耳恭听,谢谢!
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
谓词用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。如果使用 FREETEXT,则全文查询引擎将在内部对 freetext_string 执行以下操作,并为每个字词分配权重,再查找匹配项。 基于单词边界(单词界限)将字符串分隔成单独的单词。
生成单词的词形变化形式(词干处理)。
基于同义词库中的匹配项标识字词的扩展或替换的列表