快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

一起特别中文全文检索问题的解决(探索者)

事件起因:

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

错误信息:

  服务器: 消息 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, 大家以后多试试“顺藤摸瓜”吧,不过要是不知道连接着瓜的那根藤就惨了:)
返回类别: 教程
上一教程: ASP 3.0高级编程(二十八)
下一教程: 文件删除函数

您可以阅读与"一起特别中文全文检索问题的解决(探索者)"相关的教程:
· LEN(),LIFT(),RIGHT()不能正常识别中文的解决方式
· ORACLE大文本在ASP中存取问题的解决
· ORACLE920与ASP的连接问题的解决办法
· 系统时间格式问题而导致BLOG不正常的解决方式
· 英文的服务器不支持中文及中文数据库的解决办法
    微笑服务 优质保证 索取样品