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

作者:ASP精品屋 探索者

事件起因:

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

错误信息:

  服务器: 消息 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的安装目录的“MSSQL\FTDATA\SQLServer\Config”目录下面,比如中文的忽略词放在noise.chs中。

  3. 我突然发现我的电脑上中没有noise.chs,我的电脑也正不能正常使用中文全文索引。

  4. 由于服务器现在不方便连上,我在边上的一台为没安装SQL的电脑上安装了MSSQL,但很失望,安装后没有产生 noise.chs

  5. 我抱着试一试的心情,没想到在C盘的system32目录下找到了一大段的名为noise的文件,我将它们全部复制到MSSQL的安装目录的“MSSQL\FTDATA\SQLServer\Config”下面,期待的奇迹终于出现,中文可以正常使用全文索引了!最后附上一个zip文件,如果你没有此类noise文件,可以在此下载。

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

一起特殊中文全文检索问题的解决(探索者,布布扣,bubuko.com

时间: 2024-11-05 10:30:22

一起特殊中文全文检索问题的解决(探索者的相关文章

MySQL中文全文检索

一.概述 MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度. 二.语法 1 2 MATCH (col1,col2,...) AGAINST (expr [search_modifier]) search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION } 例如:SELECT * FROM tab_name WHERE MATCH ('列名1,列名2...列名n') AGAINST('词1 词

asp.net url址址中中文汉字参数传递乱码解决方法

中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirect("B.asp教程x?Name="+Server.UrlEncode(Name)); 接参的时候用UrlDecode: Response.Write(Server.UrlDecode(Request.QueryString["Name"])); 脚本儿里传参的时候用e

ubuntu 中用vim打开txt等文件中文显示乱码的解决方法  

今晚用ubuntu 12.04 的vim编辑网页代码时,发现上面的中文显示乱码.这个html文件是我之前用gedit编辑的,在gedit里面显示正常,可是在vim下显示就是乱码了. 怎么解决ubuntu中vim显示中文乱码的问题呢? 首先,添加中文字符编码: sudo gedit /var/lib/locales/supported.d/local 在打开的文件中添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030

iconv 中文截断问题的解决方法

iconv 中文截断问题的解决方法 今天做了一个採集程序,原理非常easy.使用curl方法把对方页面的html获取分析,然后正则提取须要的数据并保存在数据库. 因为对方页面是GB2312编码,而本地使用的是UTF-8编码.因此在採集后须要进行编码转换. 使用了iconv方法进行编码转换 iconv - 字符串按要求的字符编码来转换 string iconv ( string $in_charset , string $out_charset , string $str ) 将字符串 str 从

LIGHTSWITCH 连接 MYSQL,中文字符不能保存----解决方法。

使用:dotConnect for MySQL () 作为 数据库连接的PROVIDER ,  在 LIGHTSWITCH 中 引用外部的MYSQL 数据源. http://www.devart.com/dotconnect/mysql/      也有  postgre LS 项目没有使用:中文 ,而是使用 EN  产生?  后来修改了.只是 没有进一步测试. LIGHTSWITCH 连接 MYSQL,中文字符输入时,出现不能保存. 1) 检查 MYSQL 数据库及表.字段定义 ,都是:UTF

CentOS中文乱码问题的解决方法

一.CentOS系统访问 xxx.cn ,发现中文乱码于是用以前的方式:# yum -y install fonts-chinese # yum -y install fonts-ISO8859 CentOS系统安装完成后,重新启动即可. 二.终端. gedit 显示乱码# vim /etc/sysconfig/i18n 将:LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 修改原内容为: LANG="zh_CN

get/post时中文乱码问题的解决办法

常有的方法,get请求用在tomcat的编码改为utf-8 即可 post 过滤器就可以 一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码: 3.getBytes() 是通过平台默认字符集进行编码: 二.中文乱码出现 在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为在安装时没有设置:而在Servlet中

Sublime Text 3中文乱码问题的解决(最有效)

Sublime Text 3中文乱码问题的解决(最有效) Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示:  解决步骤如下: 大家如果是在官网下载的Sublime Text 3,那么首先需要安装一个 Package Control包,这是一个用来安装其他插件的包,不管装什么插件,首先要先装这个包才行  按ctrl+~快捷键,调出一个小文本款,然后

IDEA2014开发Java程序以及中文乱码问题的解决

IDEA2014开发Java程序以及中文乱码问题的解决 我们知道IDEA是可以很强大的集成开发环境,不仅可以开发Web工程,还可以开发Java运行程序,但是在进行Java开发之前,我们需要对IDEA做一些配置工作.步骤如下: 下载IDEA2014下载地址,过期私聊我(http://pan.baidu.com/s/1jIfbtdW) 下载JDK64位机(http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-windows-x64