帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
一起特殊中文全文检索问题的解决
作者:佚名 发布时间:2005-04-02 来源:不详
 

事件起因:

   好几个月前,我制作的某个网站觉得有必要采用全文索引擎,简单地自己的电脑上测试了一下全文索引,搜索一些英文字符没有问题,但搜索中文时就出现“查询子句只包含被忽略的词”的错误,任何中文都是如此。由于此网站不是很急,也就过去了。近几天,我原来制作好的一个网站需要转移,它使用了全文索引。突然发现新的专业服务器不能搜索中文,由于事情很急,我必须是几天内解决此问题。

错误信息:

   服务器: 消息 7619,级别 16,状态 1,行 2
   查询子句只包含被忽略的词。


错误疑点:

   全文索引在原来的服务器上运行一切正常,新的服务器则在搜索中文时出现上述错误。经过比较,我发现除了硬件条件不一样外,其它的运行环境都相同:
   1. 操作系统均采用Win2000 Server + SP2 简体中文版
   2. 数据库均采用Microsoft SQL Server 2000 + SP1 简体中文版
   3. SQL数据库安装时均采用默认设置,其中默认的排序方式为Chinese_RPC
   4. 数据完全一致,我通过直接附加.mdf数据库和导入数据功能,移植网站均不能正常进行中文全文检索
   5. 数据库的各种排序方式均一样,使用的全文索引语言都是“中文(中国)”,代号兼为2052

   以上的相同点构成了他们在软件上完全的一致性,但为何会出现移植后的网站不能运行呢?

解决过程:

   首先,还是自己来试试各种可能的方法吧

   在两天时间里,我用了以下各种不同的方法。
   1. 删除移植目标服务器上的全部全文索引,然后重做。我发现在重做索引时所花的时间让我不敢相信的短,虽然硬件性能可能有上倍的提高,但全文索引大部分是靠硬盘的性能,竟然只花了一个上午就完成了(原先的重建全文索引需要3 天3夜)。
   2. 我试着将所有的“单词段字符的语言”改为Neutral,既无语言状态,中文总算可以搜索了,但这很让人失望,它将所有没用符号隔开的字母和中文作为一个字儿来看待(比如有一句话“This中dk要我的在顺楞”,只有用搜索词“This 中dk要我的在顺楞”才能检索到,单用“this”或“顺”等字符连个影儿都找不着,这当然不是我的目的)。
   3. 后来我将数据库排序方式改为Chinese_PRC_bin,结果更糟,原来的数据库根本不适合这种方式。
   4. 使用数据库附加和导入方式重建数据库,仍未能成功
   5. 看来只能重装SQL Server软件来试试了。但安装完成后仍不能运行。后来我怀疑是不是跟安装了新版的SP1有关,经测试,与此无关。

   自己不会,还可以问人

   我立即到Chinaasp论坛注册了一个会员“真的很重要”,分别在Joy ASP和“数据库探讨”发了一个同样帖子询问。呆了一会儿,看我帖子的人倒是不少,但没有一人回答。
   几个小时后,我重新登陆论坛,Joy ASP人气太高,帖子挤得太后了,仍然无任何人跟帖,倒是在“数据库探讨”中有人给了一些提示,问我些条件和问题。但都是多余,对我毫无帮助。最后斑主_Rambo言自己亦无能为力,到时问问正斑主再说。一个名为萧湘剑公子的会员要我在搜索字符串前加上N如N'str',我试过了,当然也不行。

   最后还是自己想到了

   我记得有部电视剧“快嘴李翠莲”,其中的案件通过“顺藤摸瓜”最终都水落石出,我冲着这四个字,总算让我摸到了想要的“瓜”-产生中文全文索引不正常的真正原因。
   这里的藤的起点当然就是SQL语句执行所提示的错误“查询子句只包含被忽略的词。 ”,核心词儿是“忽略的词”,我知道忽略的词是指全文索引屏蔽搜索的词儿,比如中文的“的”等。从“忽略的词”这根藤延伸出去,可以有很多:
   1. 所使用的搜索词就是忽略词,当然,我使用的搜索词肯定也就是在目前系统看来正是忽略词无疑。但平时根本不是忽略词的词都成了忽略词就不正常了。
   2. 忽略词包含在名为noise.*的文件中,他们放置在MSSQL的安装目录的“MSSQLFTDATASQLServerConfig”目录下面,比如中文的忽略词放在noise.chs中。
   3. 我突然发现我的电脑上中没有noise.chs,我的电脑也正不能正常使用中文全文索引。
   4. 由于服务器现在不方便连上,我在边上的一台为没安装SQL的电脑上安装了MSSQL,但很失望,安装后没有产生 noise.chs
   5. 我抱着试一试的心情,没想到在C盘的system32目录下找到了一大段的名为noise的文件,我将它们全部复制到MSSQL的安装目录的“MSSQLFTDATASQLServerConfig”下面,期待的奇迹终于出现,中文可以正常使用全文索引了!最后附上一个zip文件,如果你没有此类noise文件,可以在此下载。

   Well, 大家以后多试试“顺藤摸瓜”吧,不过要是不知道连接着瓜的那根藤就惨了:)

 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统