我刚接触全文索引,碰到了问题,请大侠们帮忙
1、MSSQL全文索引 英文下逗号“,”,空格“ ”,“&”(目前暂时发现这个三个字符,可能还有其他字符)等都导致全文索引搜索错误。2、全文索引的索引字段类型:nvarchar(250)(内容基本以英文内容为主的短文,因为也有中文,或者输入的中文符号,索引这边我偷懒设为nvarchar类型)
断字符语言:简体中文(昨天已经改为英文--我本来猜测是这个原因,结果不是)3、索引字段里的某些网页要处理的特殊字符,我都用替代字符串保存在数据表字段中
return str.Replace("&", "&").Replace("'", "'").Replace(@"""", """).Replace("<", "<").Replace(">", ">").Replace(" where ", " where ").Replace(" select ", " select ").Replace(" insert ", " insert ").Replace(" create ", " create ").Replace(" drop ", " drop ").Replace(" alter ", " alter ").Replace(" delete ", " delete ").Replace(" update ", " update ").Replace(" or ", " or ").Replace("\"", @""");
所以一些特殊字符在字段中存放都包含了&,但是全文索引有&也会报错。问题一、断字符语言不同对全文索引的执行方面有具体哪些不同影响(字面理解上,感觉是语言不同,断句规律就不同,索引规律也就有区别,搜索结果就会不同,照字面意思,因为索引字段主要有英文组成,我改成断字符语言为英文应该更加合适吧?!不知道还有什么深层次的区别)?!!
问题二、怎么从根本上解决全文索引特殊符号导致错误的问题
1、MSSQL全文索引 英文下逗号“,”,空格“ ”,“&”(目前暂时发现这个三个字符,可能还有其他字符)等都导致全文索引搜索错误。2、全文索引的索引字段类型:nvarchar(250)(内容基本以英文内容为主的短文,因为也有中文,或者输入的中文符号,索引这边我偷懒设为nvarchar类型)
断字符语言:简体中文(昨天已经改为英文--我本来猜测是这个原因,结果不是)3、索引字段里的某些网页要处理的特殊字符,我都用替代字符串保存在数据表字段中
return str.Replace("&", "&").Replace("'", "'").Replace(@"""", """).Replace("<", "<").Replace(">", ">").Replace(" where ", " where ").Replace(" select ", " select ").Replace(" insert ", " insert ").Replace(" create ", " create ").Replace(" drop ", " drop ").Replace(" alter ", " alter ").Replace(" delete ", " delete ").Replace(" update ", " update ").Replace(" or ", " or ").Replace("\"", @""");
所以一些特殊字符在字段中存放都包含了&,但是全文索引有&也会报错。问题一、断字符语言不同对全文索引的执行方面有具体哪些不同影响(字面理解上,感觉是语言不同,断句规律就不同,索引规律也就有区别,搜索结果就会不同,照字面意思,因为索引字段主要有英文组成,我改成断字符语言为英文应该更加合适吧?!不知道还有什么深层次的区别)?!!
问题二、怎么从根本上解决全文索引特殊符号导致错误的问题
解决方案 »
- MS sql 2005打开表后又乱码问题, 改排序规则又报错5030.
- sql server 不存在或拒绝访问
- 请教 all
- 求一SQL语句:还原a.bak里面的A,B,C三个表
- 如何解決一個問題:存儲過程中有一個局部變量長度要超過varchar(4000)
- 利用SQL语句,将datetime转换成yyyy/mm/dd hh:mm:ss格式的字符串
- 一个关于日期的问题
- 同一个数据库中不同表之间的数据复制?
- 请教诸位大虾:MS SQL SERVER 支持嵌套事务处理吗?
- 求救:关于SQl2008 使用OpenROWSET的问题。
- 请教:数据库中 Scheme 的概念和作用
- 如何优化这个查询存储过程?各位来看看
问题二、怎么从根本上解决全文索引特殊符号导致错误的问题用UNICODE编码
全文索引也包含我上述说的字符,生成全文索引都正常的,这应该没问题(但是搜索条件包含上述的字符是在业务逻辑里的)刚开始我以为只是英文输入法下的空格,然后用大写下的空格替换关键词,暂时解决了,昨天发现英文输入法下逗号和&等也会出现此类问题··我估计单纯的字符替换不是解决的办法,估计还有其他的字符可能也会出现此类错误,我不知道具体原因是什么,希望提供解决方案
请问这里的UNICODE编码是如何处理呢?