我刚接触全文索引,碰到了问题,请大侠们帮忙
1、MSSQL全文索引 英文下逗号“,”,空格“ ”,“&”(目前暂时发现这个三个字符,可能还有其他字符)等都导致全文索引搜索错误。2、全文索引的索引字段类型:nvarchar(250)(内容基本以英文内容为主的短文,因为也有中文,或者输入的中文符号,索引这边我偷懒设为nvarchar类型)
断字符语言:简体中文(昨天已经改为英文--我本来猜测是这个原因,结果不是)3、索引字段里的某些网页要处理的特殊字符,我都用替代字符串保存在数据表字段中
return str.Replace("&", "&amp;").Replace("'", "&apos;").Replace(@"""", "&quot;").Replace("<", "&lt;").Replace(">", "&gt;").Replace(" where ", " wh&#101;re ").Replace(" select ", " sel&#101;ct ").Replace(" insert ", " ins&#101;rt ").Replace(" create ", " cr&#101;ate ").Replace(" drop ", " dro&#112 ").Replace(" alter ", " alt&#101;r ").Replace(" delete ", " del&#101;te ").Replace(" update ", " up&#100;ate ").Replace(" or ", " o&#114; ").Replace("\"", @"&#34;");
所以一些特殊字符在字段中存放都包含了&,但是全文索引有&也会报错。问题一、断字符语言不同对全文索引的执行方面有具体哪些不同影响(字面理解上,感觉是语言不同,断句规律就不同,索引规律也就有区别,搜索结果就会不同,照字面意思,因为索引字段主要有英文组成,我改成断字符语言为英文应该更加合适吧?!不知道还有什么深层次的区别)?!!
问题二、怎么从根本上解决全文索引特殊符号导致错误的问题

解决方案 »

  1.   

    问题一、断字符语言不同对全文索引的执行方面有具体哪些不同影响(字面理解上,感觉是语言不同,断句规律就不同,索引规律也就有区别,搜索结果就会不同,照字面意思,因为索引字段主要有英文组成,我改成断字符语言为英文应该更加合适吧?!不知道还有什么深层次的区别)?!!排序规则的问题
    问题二、怎么从根本上解决全文索引特殊符号导致错误的问题用UNICODE编码
      

  2.   

    是的,输入的搜索条件。
    全文索引也包含我上述说的字符,生成全文索引都正常的,这应该没问题(但是搜索条件包含上述的字符是在业务逻辑里的)刚开始我以为只是英文输入法下的空格,然后用大写下的空格替换关键词,暂时解决了,昨天发现英文输入法下逗号和&等也会出现此类问题··我估计单纯的字符替换不是解决的办法,估计还有其他的字符可能也会出现此类错误,我不知道具体原因是什么,希望提供解决方案
      

  3.   


    请问这里的UNICODE编码是如何处理呢?