⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_47845.htm

📁 vc
💻 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列全攻略&nbsp;&nbsp;<BR><BR>今天“百年不遇”的停电了,看了一天书。晚上搞了一下全文索引,决定把心得贴出来,我尽量写的详细,大家共同学习,欢迎指正! <BR><BR>1、启动 Microsoft Search 服务 <BR>&nbsp;&nbsp; 开始菜单--&gt;SQL程序组--&gt;服务管理器--&gt;下拉筐--&gt;Microsoft Search 服务--&gt;启动它 <BR><BR>2、 <BR>&nbsp;&nbsp;..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件 <BR>&nbsp;&nbsp;非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。 <BR><BR>3、建立环境 <BR>&nbsp;&nbsp; 打开查询分析器--&gt;执行下列脚本: <BR>-------------------------------------------- <BR>create database test ---创建test数据库 <BR>use test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---选择test数据库 <BR>create table&nbsp;&nbsp;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'&nbsp;&nbsp;---创建一个叫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&nbsp;&nbsp;----这两句是为全文索引,对表进行标记 <BR><BR>sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType'&nbsp;&nbsp;---这句是指定MyImage列为全文索引列,FileType是类型列 <BR>------------------------------------------------ <BR>4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片 <BR>&nbsp;&nbsp; 共4个,大家可根据实际情况放入! <BR><BR>5、插入数据 <BR>&nbsp;&nbsp;建立下面这个存储过程 <BR>-------------------------------------------------- <BR>CREATE PROCEDURE sp_textcopy&nbsp;&nbsp;<BR>&nbsp;&nbsp;@srvname&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@login&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@password&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@dbname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@tbname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@colname&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@filename&nbsp;&nbsp;&nbsp;&nbsp;varchar (30),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@whereclause varchar (40),&nbsp;&nbsp;<BR>&nbsp;&nbsp;@direction&nbsp;&nbsp;char(1)&nbsp;&nbsp;<BR>AS&nbsp;&nbsp;<BR>/* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */ <BR>DECLARE @exec_str varchar (255)&nbsp;&nbsp;<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 -&gt;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&nbsp;&nbsp;--打开数据库 <BR>go <BR>--检查pubs是否支持全文索引,如果不支持全文索引,则使用sp_fulltext_datebase打开该功能 <BR>if (select databaseproperty ('pubs','IsFulltextEnables'))=0 <BR>&nbsp;&nbsp; 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>&nbsp;&nbsp;GO <BR>&nbsp;&nbsp;--检查全文目录填充情况 <BR>&nbsp;&nbsp; WHILE FulltextCatalogProperty("FT_pubs','PopulateStatus')&lt;&gt;0 <BR>&nbsp;&nbsp;&nbsp;&nbsp;BEGIN <BR>&nbsp;&nbsp;&nbsp;&nbsp; --如果全文目录正处于填充状态,则等待30秒后再检测一次 <BR>&nbsp;&nbsp;&nbsp;&nbsp; WAITFOR DELAY ‘0:0:30’ <BR>&nbsp;&nbsp;&nbsp;&nbsp;END <BR>--全文目录填充完成后,使用全文目录检索 <BR><BR>--查询title列或notes列中包含有database或computer字符串的图书名称 <BR>SELECT title <BR>&nbsp;&nbsp;FROM title <BR>&nbsp;&nbsp;where CONTAINTS(title,'database') <BR>&nbsp;&nbsp; or contains(notes,'database') <BR>&nbsp;&nbsp; or contains(title,'computer') <BR>&nbsp;&nbsp; or contains(notes,'computer')&nbsp;&nbsp;
<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 + -