SELECT * FROM sGuangDong where freetext(Company,'华为')SELECT * FROM sGuangDong where Contains(Company,'华为')
搜出来的结果一样,而且为什么把所有包含“华”字的企业搜出来了,
而不的包含“华为” 百思不得其解
解决方案 »
- 导入EXCEL数据到SQL
- 怎么用SQL语句实现插入binary(n)类型的数据呢?
- 简单的
- 现有一后缀名是.QRP的数据文件,不知如何打开?
- SQL2005 远程连接 错误18456 state28000
- 我修改了数据库方面的很多东西,例如触发器,视图,还有存储过程什么的!有的连表结构都改变了!
- 90万条数据在进行以下查询进出现超时错误
- SQLServer排序Order By使用的是什么算法
- 如何在VC中用ADO调用SQL SERVER中的存储过程?
- 请问为什么sql server2000数据库里的数据在Win XP下不能显示中文啊??
- 如何将sqlserver服务器的数据,输出文本到本地计算机?
- 触发器的参数怎么传不进去啊?
SELECT * FROM sGuangDong where Contains(Company,isabout('为' weight(0.8),'华' weight(0.3)))试 一下,把为的列前面了。
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
不行啊 关键字 'key' 附近有语法错误。
'ISABOUT (为 weight (.8),
华weight (.4))' ) AS b where b.[key]=a.id order by b.rank desc
改成不是关键字:)
还是错误
------------
消息 207,级别 16,状态 1,第 3 行
列名 'id' 无效。
消息 7630,级别 15,状态 2,第 3 行
在全文搜索条件 'ISABOUT (为 weight (.8),
华weight (.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
改为以下试试
Contains(Company,'"华为"')
Contains则认为是一个词语或坡度为0的2个词语
Contains(Company,'华为') 修改为Contains(Company,'"*华为*"')即可freetext的模糊匹配效率很低
意思就是说,指定以指定文本开始的词或短语的匹配项。将前缀字词用英文双引号 ("") 括起来,并在右引号前添加一个星号 (*),这样一来,以星号前指定的简单字词开头的所有文本都将被匹配。应以下列方式指定子句:CONTAINS (column, '"text*"')。星号可以匹配根词或短语的词中的 0 个、1 个或多个字符。如果文本和星号不用英文双引号分隔,则谓词将读取 CONTAINS (column, 'text*'),全文搜索会将星号看作字符,搜索 text* 的完全匹配项。由于断字符通常忽略 (*) 这样的字符,因此全文引擎将不会查找带此类字符的词。如果 <prefix_term> 是一个短语,则短语中包含的每个词都将被看成一个单独的前缀。因此,指定了一个 "local wine *" 前缀字词的查询,将匹配所有包含 "local winery"、"locally wined and dined" 等文本的行。
意思就是说,where freetext(Company, '"华为 "'),加上英文的双引号就ok了