环境:Windows2003+SQL2000(SP3)
现象:全文索引使用CONTAINS检索时部分内容检索不到,但使用like检索正常示例:
字段值:它将伞骨增加一批,制成风扇形伞
检索词:风扇--无结果
检索词:成风--有结果结论:SQL在做索引时把"成风"分成了词,但这样明显错误,想关闭SQL的中文分词功能,不知道哪位DX有过这方面的经验

解决方案 »

  1.   

    最新进展汇报:
    在Windows2000+SQL2000(SP3)的机器上未出现所述现象,此环境应该是完全按字索引,可以正常查询到"风扇"的检索结果
      

  2.   

    已经试过W2K3+SQL2K+SP3,也出现的同样的问题,初步确定是W2K3的问题,看到以前也有过这样一个贴子,只是没有看到最终答案
    http://topic.csdn.net/t/20050927/16/4297538.html
      

  3.   

    编辑...\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录下的
    noise.chs文件,清空文档,输入‘@’(其他的偏僻符号也可以)
      

  4.   

    楼主参考:
    http://ppabc.cn/dispbbs.asp?boardID=12&ID=500&page=1
      

  5.   

    declare @w varchar(8000)
    set @w='常用的分词算法有正向最大匹配、逆向最大匹配、双向最大匹配、最佳匹配法、最少分词法、词网格算法等等。 
    最大匹配法(Forward Maximum Matching method, FMM法):选取包含6-8个汉字的符号串作为最大符号串,把最大符号串与词典中的单词条目相匹配,如果不能匹配,就削掉一个汉字继续匹配,直到在词典中找到相应的单词为止。匹配的方向是从右向左。 
    逆向最大匹配法(Backward Maximum Matching method, BMM法):匹配方向与MM法相反,是从左向右。实验表明:对于汉语来说,逆向最大匹配法比最大匹配法更有效。 
    双向匹配法(Bi-direction Matching method, BM法):比较MM法与RMM法的切分结果,从而决定正确的切分。 
    最佳匹配法(Optimum Matching method, OM法):将词典中的单词按它们在文本中的出现频度的大小排列,高频度的单词排在前,频度低的单词排在后,从而提高匹配的速度。'declare @tb table(w varchar(10),f int)
    declare @i int
    declare @l int
    declare @theWord varchar(10)
    set @l=2
    while @l<5
    begin
    set @i=1
    while @i<len(@w)
    begin
    set @theWord=substring(@w,@i,@l)
    if  charindex(' ',@theWord)=0 begin
    if   exists(select w from @tb where w=@theWord)
    begin
    update @tb set f=f+1 where w=@theWord
    end
    else
    begin
    insert @tb(w,f) select @theWord,1
    end end
    set @i=@i+1
    end
    set @l=@l+1
    end
     
    select * from @tb where f>len(@w)/70  order by f desc