📄 subject_47845.htm
字号:
<p>
序号:47845 发表者:qiying 发表日期:2003-07-24 18:04:48
<br>主题:为什么我的SQL SERVER 2000里面的全文索引怎么是虚设的啊,不能用,求高手指点
<br>内容:我的SQL SERVER 2000里面的全文索引怎么是虚设的啊,不能用,我想建个全文索引,然后用contains语句,但是就是不行,用了如下代码:<BR>use locus<BR>execute sp_fulltext_database 'enable' <BR>execute sp_fulltext_catalog 'ft_test','create'<BR>execute sp_fulltext_table 'cx_forbid','create','ft_test','IX_cx_forbid' <BR>execute sp_fulltext_column 'cx_forbid','forbid','add' <BR>execute sp_fulltext_table 'cx_forbid','activate' <BR><BR>但提示说全文服务(Microsoft 搜索)不可用。系统管理员必须启动此服务。<BR>我怎么样才能启动此服务呢,谢谢高手指点
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:要省钱 回复日期:2003-07-24 19:09:21
<br>内容:http://www.tech521.com/techData/data/2110.asp<BR>网上找到----声明转载--<BR><BR> MS SQL Server2000全文索引image列全攻略 <BR><BR>今天“百年不遇”的停电了,看了一天书。晚上搞了一下全文索引,决定把心得贴出来,我尽量写的详细,大家共同学习,欢迎指正! <BR><BR>1、启动 Microsoft Search 服务 <BR> 开始菜单-->SQL程序组-->服务管理器-->下拉筐-->Microsoft Search 服务-->启动它 <BR><BR>2、 <BR> ..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件 <BR> 非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。 <BR><BR>3、建立环境 <BR> 打开查询分析器-->执行下列脚本: <BR>-------------------------------------------- <BR>create database test ---创建test数据库 <BR>use test ---选择test数据库 <BR>create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---创建dali表 <BR>--dali表中 Id,MyImage,FileType 三列是必须的,因为要对image列索引的话,必须要有一个主键列,一个image列,一个存放文件类型的列 <BR>--我们知道在windows系统中文件类型是靠扩展名来区分的所以FileType列也就是用来放 文件的扩展名 <BR>-------------------------------------------- <BR><BR>sp_fulltext_database 'enable' --为全文索引启用数据库 <BR>sp_fulltext_catalog 'My_FullDir', 'create' ---创建一个叫My_FullDif的全文目录 <BR><BR>declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('a') and a.name='a' and a.id=b.id and b.constid=c.id and c.name like 'PK%' <BR>exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----这两句是为全文索引,对表进行标记 <BR><BR>sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---这句是指定MyImage列为全文索引列,FileType是类型列 <BR>------------------------------------------------ <BR>4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片 <BR> 共4个,大家可根据实际情况放入! <BR><BR>5、插入数据 <BR> 建立下面这个存储过程 <BR>-------------------------------------------------- <BR>CREATE PROCEDURE sp_textcopy <BR> @srvname varchar (30), <BR> @login varchar (30), <BR> @password varchar (30), <BR> @dbname varchar (30), <BR> @tbname varchar (30), <BR> @colname varchar (30), <BR> @filename varchar (30), <BR> @whereclause varchar (40), <BR> @direction char(1) <BR>AS <BR>/* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */ <BR>DECLARE @exec_str varchar (255) <BR>SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@direction <BR>EXEC master..xp_cmdshell @exec_str <BR>---------------------------------------------------- <BR><BR>insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一个16进制数对应image列,是必须的,不要写null,第三列是文件类型,既扩展名 <BR><BR>sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I' <BR>-------依次参数是:实例名,用户名,密码,数据库名,表名,image列名,路径及文件名,条件(你必须保证它只选择一行),I <BR>--------------------------------------------------------------------------------------------------------------------- <BR>insert dali values(2,0x,'bmp','图片') <BR>sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\图片.bmp','where ID=2','I' --注意条件是 ID=2 <BR><BR>insert dali values(3,0x,'xls','Excel文件') <BR>sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意条件是 ID=3 <BR><BR>insert dali values(4,0x,'htm','网页') <BR>sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\网页.htm','where ID=4','I' --注意条件是 ID=4 <BR><BR>----------上面的语句,要保证类型一样,路径正确,条件唯一正确应该就可以了 <BR><BR>6、填充全文索引 <BR><BR>sp_fulltext_table 'dali','start_full' ---第一个参数是表名,第二个参数是启动表的全文索引的完全填充 <BR><BR>7、可以开始你的实验了 <BR><BR>select * from dali where contains(MyImage,'J老师') <BR><BR>select * from dali where contains(MyImage,'海老师') <BR><BR>------END---------- <BR>--调试环境:SQLServer2K、Windows2Kas <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:要省钱 回复日期:2003-07-24 19:10:40
<br>内容:在Microsoft SQL Server 7.0 中提供了全文索引服务(Full-Text Search Service),在查询性能上,对varchar,char,text类型的字段的匹配查询比用Sql 语句使用Like操作符及匹配符的速度快10倍以上;在查询匹配上,提供了模糊匹配的高级搜索性能并能够返回查询的命中率。<BR><BR> Full Text Search Service包含在Sql Server 7.0中,在Sql Server 7 Destop版中不起作用。安装Sql server时,无法缺省安装它,需要在Custom Installation 中选择。服务安装完后在Sql Server EnterPrise Manager中的Support Services中显示为Full-text Search,在控制面版中的服务中显示为Microsoft Search.可以在Sql Server EnterPrise Manager中启动这个服务,就可以在表中加入全文索引了。 <BR><BR> 要注意:只有有唯一索引栏的表才能建立全文索引,并且全文索引建立好之后就不能改变表了,如要改变表就必须得取出索引,然后再装入。 对表设置全文索引应用如下步骤: <BR><BR> 1. 选择要建立全文索引的表,然后选择: Full-Text Index Table ->Define Full-Text Indexing on a table。<BR><BR> 2. 系统会启动Sql Server Full-Text Index 向导。 <BR><BR> 3. 选择一个唯一索引。 <BR><BR> 4. 选择一个要建立索引的字段。 <BR><BR> 5. 选择catalog。<BR><BR> 6. 选择更新索引计划(由于全文索引和普通索引表不同,不能自动更新,所以得加入一个计划)。<BR><BR> 7. Finish。<BR><BR> 8. 选择在数据库Full-text catalogs中里的新建立的catalog,然后运行Start Population,Full Population 就可以了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:要省钱 回复日期:2003-07-24 19:16:42
<br>内容:这篇应该可以。,,<BR><BR>为了支持全文索引操作,sql server 7.0新增了一些新存储过程和transact-sql语句,使用这些存储过程创建全文索引的 <BR>具本步骤为(括号内为每步所调用的存储过程名称): <BR><BR>(1)启动数据库的全文处理功能(sp_fulltext_datebase); <BR>(2)建立全文目录(sp_fulltext_catalog); <BR>(3)在全文目录中注册需要全文索引的表(sp_fulltext_table); <BR>(4)指出表中需要全文检索的列名(sp_fulltext_column) <BR>(5)为表创建全文索引(sp_fulltext_table); <BR>(6)填充全文索引(sp_fulltext_catalog)。 <BR><BR>例: <BR>use pubs <BR>go <BR>exec sp_fulltext_database 'enable' <BR>--为titles表建立全文索引数据元,其中create为建立,activate为激活,deactivate为关闭表全文索引的激活状态,使 <BR>它不再参加全文目录填充,drop为删除;create参数中,后面跟的是全文目录名称和索引列名。 <BR>--下面语句为pubs数据库中的titles表创建全文索引数据元,存储该数据元的全文目录为FT_pubs,所使用的唯一索引为 <BR>UPKCL_titleidind(title表中为title_id列的PRIMARY KEY约束所建立的唯中索引) <BR>sp_fulltext_table titles,'create','FT_pubs','upkcl_titledind' <BR><BR>--激活它 <BR>sp_fulltext_table titles,'activate' <BR><BR>--指定参加全文索引的列 <BR>sp_fulltext_column 'titles','title','add' <BR>sp_fulltext_column 'titles','notes','add' <BR><BR>下面是一个完整的例子: <BR>--在执行该脚本程序之前启动sql server的全文搜索服务,即microsoft search服务 <BR>use pubs --打开数据库 <BR>go <BR>--检查pubs是否支持全文索引,如果不支持全文索引,则使用sp_fulltext_datebase打开该功能 <BR>if (select databaseproperty ('pubs','IsFulltextEnables'))=0 <BR> execute sp_fulltext_database 'enable' <BR>--建立全文目录FT_pubs <BR>execute sp_fulltext_catalog 'FT_pubs','create' <BR>--为titles表建立全文索引数据元 <BR>execute sp_fulltext_table 'titles','FT_pubs','UPKCL_titleidind' <BR>--设置全文索引列名 <BR>execute sp_fulltext_column 'titles','title','add' <BR>execute sp_fulltext_column 'titles','notes','add' <BR>--建立全文索引 <BR>execute sp_fulltext_table 'FT_pubs','activate' <BR>--填充全文索引目录 <BR>execute sp_fulltext_catalog 'FT_pubs','start_full' <BR> GO <BR> --检查全文目录填充情况 <BR> WHILE FulltextCatalogProperty("FT_pubs','PopulateStatus')<>0 <BR> BEGIN <BR> --如果全文目录正处于填充状态,则等待30秒后再检测一次 <BR> WAITFOR DELAY ‘0:0:30’ <BR> END <BR>--全文目录填充完成后,使用全文目录检索 <BR><BR>--查询title列或notes列中包含有database或computer字符串的图书名称 <BR>SELECT title <BR> FROM title <BR> where CONTAINTS(title,'database') <BR> or contains(notes,'database') <BR> or contains(title,'computer') <BR> or contains(notes,'computer')
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -