SELECT *  FROM sGuangDong where freetext(Company,'华为')SELECT *  FROM sGuangDong where Contains(Company,'华为')
搜出来的结果一样,而且为什么把所有包含“华”字的企业搜出来了,
而不的包含“华为”  百思不得其解

解决方案 »

  1.   

    sqlserver内部分词的处理不太好,
    SELECT *  FROM sGuangDong where Contains(Company,isabout('为' weight(0.8),'华' weight(0.3)))试 一下,把为的列前面了。
      

  2.   

    上面写错了,按这个试一下吧。
    select a.* from tablename a,CONTAINSTABLE(tablename, sGuangDong, 
       'ISABOUT (为 weight (.8), 
       华weight (.4))' ) AS b where b.key=a.id order by b.rank desc
      

  3.   


    不行啊 关键字 'key' 附近有语法错误。
      

  4.   

    select a.* from tablename a,CONTAINSTABLE(tablename, sGuangDong, 
       'ISABOUT (为 weight (.8), 
       华weight (.4))' ) AS b where b.[key]=a.id order by b.rank desc
    改成不是关键字:)
      

  5.   


    还是错误
    ------------
    消息 207,级别 16,状态 1,第 3 行
    列名 'id' 无效。
    消息 7630,级别 15,状态 2,第 3 行
    在全文搜索条件 'ISABOUT (为 weight (.8), 
       华weight (.4))' 内的 '(' 附近存在语法错误。
    ----以前我没写过这种 ,不知怎么改
      

  6.   

    好像差一空格,再试一下吧,联机帮助里够详细了。
    select a.* from tablename a,CONTAINSTABLE(tablename,sGuangDong, 'ISABOUT (为 weight (.8),华 weight (.4))' ) AS b where b.[key]=a.id order by b.rank desc
      

  7.   

    Contains(Company,'华为')
    改为以下试试
    Contains(Company,'"华为"')
      

  8.   

    freetext是模糊匹配,有华、为的词(sql认为的词,除了干扰词)都会查询出来
    Contains则认为是一个词语或坡度为0的2个词语
    Contains(Company,'华为') 修改为Contains(Company,'"*华为*"')即可freetext的模糊匹配效率很低
      

  9.   

    freetext语句所执行的功能又称做自由式全文查询
      

  10.   

    指定以指定文本开始的词或短语的匹配项。将前缀字词用英文双引号 ("") 括起来,并在右引号前添加一个星号 (*),这样一来,以星号前指定的简单字词开头的所有文本都将被匹配。应以下列方式指定子句:CONTAINS (column, '"text*"')。星号可以匹配根词或短语的词中的 0 个、1 个或多个字符。如果文本和星号不用英文双引号分隔,则谓词将读取 CONTAINS (column, 'text*'),全文搜索会将星号看作字符,搜索 text* 的完全匹配项。由于断字符通常忽略 (*) 这样的字符,因此全文引擎将不会查找带此类字符的词。如果 <prefix_term> 是一个短语,则短语中包含的每个词都将被看成一个单独的前缀。因此,指定了一个 "local wine *" 前缀字词的查询,将匹配所有包含 "local winery"、"locally wined and dined" 等文本的行。
    意思就是说,指定以指定文本开始的词或短语的匹配项。将前缀字词用英文双引号 ("") 括起来,并在右引号前添加一个星号 (*),这样一来,以星号前指定的简单字词开头的所有文本都将被匹配。应以下列方式指定子句:CONTAINS (column, '"text*"')。星号可以匹配根词或短语的词中的 0 个、1 个或多个字符。如果文本和星号不用英文双引号分隔,则谓词将读取 CONTAINS (column, 'text*'),全文搜索会将星号看作字符,搜索 text* 的完全匹配项。由于断字符通常忽略 (*) 这样的字符,因此全文引擎将不会查找带此类字符的词。如果 <prefix_term> 是一个短语,则短语中包含的每个词都将被看成一个单独的前缀。因此,指定了一个 "local wine *" 前缀字词的查询,将匹配所有包含 "local winery"、"locally wined and dined" 等文本的行。
    意思就是说,where   freetext(Company, '"华为 "'),加上英文的双引号就ok了