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

解决方案 »

  1.   

    精确查找用
    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
      

  2.   

    sql自身断词有时不准,可能将金钻分为‘金’和‘钻’如果加权重排序的话,金会排最前,钻次之
      

  3.   

    可參考
    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
      

  4.   

    FREETEXT
    谓词用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。如果使用 FREETEXT,则全文查询引擎将在内部对 freetext_string 执行以下操作,并为每个字词分配权重,再查找匹配项。 基于单词边界(单词界限)将字符串分隔成单独的单词。
    生成单词的词形变化形式(词干处理)。
    基于同义词库中的匹配项标识字词的扩展或替换的列表