今天“百年不遇”的停電了,看了一天書。晚上搞了一下全文索引,決定把心得貼出來,我盡量寫的詳細(xì),大家共同學(xué)習(xí),歡迎指正!
1、啟動(dòng) Microsoft Search 服務(wù)
開疾說?->SQL程序組-->服務(wù)管理器-->下拉筐-->Microsoft Search 服務(wù)-->啟動(dòng)它
2、
..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄里建一個(gè)非空noise.chs文件
非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個(gè)沒用的字母。
3、建立環(huán)境
打開查詢分析器-->執(zhí)行下列腳本:
--------------------------------------------
create database test ---創(chuàng)建test數(shù)據(jù)庫
use test ---選擇test數(shù)據(jù)庫
create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---創(chuàng)建dali表
--dali表中 Id,MyImage,FileType 三列是必須的,因?yàn)橐獙?duì)image列索引的話,必須要有一個(gè)主鍵列,一個(gè)image列,一個(gè)存放文件類型的列
--我們知道在windows系統(tǒng)中文件類型是靠擴(kuò)展名來區(qū)分的所以FileType列也就是用來放 文件的擴(kuò)展名
--------------------------------------------
sp_fulltext_database 'enable' --為全文索引啟用數(shù)據(jù)庫
sp_fulltext_catalog 'My_FullDir', 'create' ---創(chuàng)建一個(gè)叫My_FullDif的全文目錄
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%'
exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----這兩句是為全文索引,對(duì)表進(jìn)行標(biāo)記
sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---這句是指定MyImage列為全文索引列,FileType是類型列
------------------------------------------------
4、在c盤下放一個(gè)擴(kuò)展名為doc的word文件,一個(gè)擴(kuò)展名為xls的excel文件,一個(gè)擴(kuò)展名為htm的網(wǎng)頁文件,個(gè)擴(kuò)展名為bmp的圖片共4個(gè),大家可根據(jù)實(shí)際情況放入!
5、插入數(shù)據(jù)
建立下面這個(gè)存儲(chǔ)過程
--------------------------------------------------
CREATE PROCEDURE sp_textcopy
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1)
AS
/* 這是使用textcopy工具將文件插入到數(shù)據(jù)庫中,如果有前臺(tái)工具可以用前臺(tái)開發(fā)工具將文件插入,這里為了演示 */
DECLARE @exec_str varchar (255)
SELECT @exec_str='textcopy /S ' @srvname ' /U ' @login ' /P ' @password ' /D ' @dbname ' /T' @tbname ' /C ' @colname ' /W"' @whereclause '" /F"' @filename '" /' @direction
EXEC master..xp_cmdshell @exec_str
----------------------------------------------------
insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一個(gè)16進(jìn)制數(shù)對(duì)應(yīng)image列,是必須的,不要寫null,第三列是文件類型,既擴(kuò)展名
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'
-------依次參數(shù)是:實(shí)例名,用戶名,密碼,數(shù)據(jù)庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),I
---------------------------------------------------------------------------------------------------------------------
insert dali values(2,0x,'bmp','圖片')
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\圖片.bmp','where ID=2','I' --注意條件是 ID=2
insert dali values(3,0x,'xls','Excel文件')
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意條件是 ID=3
insert dali values(4,0x,'htm','網(wǎng)頁')
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\網(wǎng)頁.htm','where ID=4','I' --注意條件是 ID=4
----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應(yīng)該就可以了
6、填充全文索引
sp_fulltext_table 'dali','start_full' ---第一個(gè)參數(shù)是表名,第二個(gè)參數(shù)是啟動(dòng)表的全文索引的完全填充
7、可以開始你的實(shí)驗(yàn)了
select * from dali where contains(MyImage,'J老師')
select * from dali where contains(MyImage,'海老師')
------END----------
--調(diào)試環(huán)境:SQLServer2K、Windows2Kas
1、啟動(dòng) Microsoft Search 服務(wù)
開疾說?->SQL程序組-->服務(wù)管理器-->下拉筐-->Microsoft Search 服務(wù)-->啟動(dòng)它
2、
..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄里建一個(gè)非空noise.chs文件
非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個(gè)沒用的字母。
3、建立環(huán)境
打開查詢分析器-->執(zhí)行下列腳本:
--------------------------------------------
create database test ---創(chuàng)建test數(shù)據(jù)庫
use test ---選擇test數(shù)據(jù)庫
create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---創(chuàng)建dali表
--dali表中 Id,MyImage,FileType 三列是必須的,因?yàn)橐獙?duì)image列索引的話,必須要有一個(gè)主鍵列,一個(gè)image列,一個(gè)存放文件類型的列
--我們知道在windows系統(tǒng)中文件類型是靠擴(kuò)展名來區(qū)分的所以FileType列也就是用來放 文件的擴(kuò)展名
--------------------------------------------
sp_fulltext_database 'enable' --為全文索引啟用數(shù)據(jù)庫
sp_fulltext_catalog 'My_FullDir', 'create' ---創(chuàng)建一個(gè)叫My_FullDif的全文目錄
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%'
exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----這兩句是為全文索引,對(duì)表進(jìn)行標(biāo)記
sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---這句是指定MyImage列為全文索引列,FileType是類型列
------------------------------------------------
4、在c盤下放一個(gè)擴(kuò)展名為doc的word文件,一個(gè)擴(kuò)展名為xls的excel文件,一個(gè)擴(kuò)展名為htm的網(wǎng)頁文件,個(gè)擴(kuò)展名為bmp的圖片共4個(gè),大家可根據(jù)實(shí)際情況放入!
5、插入數(shù)據(jù)
建立下面這個(gè)存儲(chǔ)過程
--------------------------------------------------
CREATE PROCEDURE sp_textcopy
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1)
AS
/* 這是使用textcopy工具將文件插入到數(shù)據(jù)庫中,如果有前臺(tái)工具可以用前臺(tái)開發(fā)工具將文件插入,這里為了演示 */
DECLARE @exec_str varchar (255)
SELECT @exec_str='textcopy /S ' @srvname ' /U ' @login ' /P ' @password ' /D ' @dbname ' /T' @tbname ' /C ' @colname ' /W"' @whereclause '" /F"' @filename '" /' @direction
EXEC master..xp_cmdshell @exec_str
----------------------------------------------------
insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一個(gè)16進(jìn)制數(shù)對(duì)應(yīng)image列,是必須的,不要寫null,第三列是文件類型,既擴(kuò)展名
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'
-------依次參數(shù)是:實(shí)例名,用戶名,密碼,數(shù)據(jù)庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),I
---------------------------------------------------------------------------------------------------------------------
insert dali values(2,0x,'bmp','圖片')
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\圖片.bmp','where ID=2','I' --注意條件是 ID=2
insert dali values(3,0x,'xls','Excel文件')
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意條件是 ID=3
insert dali values(4,0x,'htm','網(wǎng)頁')
sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\網(wǎng)頁.htm','where ID=4','I' --注意條件是 ID=4
----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應(yīng)該就可以了
6、填充全文索引
sp_fulltext_table 'dali','start_full' ---第一個(gè)參數(shù)是表名,第二個(gè)參數(shù)是啟動(dòng)表的全文索引的完全填充
7、可以開始你的實(shí)驗(yàn)了
select * from dali where contains(MyImage,'J老師')
select * from dali where contains(MyImage,'海老師')
------END----------
--調(diào)試環(huán)境:SQLServer2K、Windows2Kas