今天“百年不遇”的停電了,看了一天書。晚上搞了一下全文索引,決定把心得貼出來,我盡量寫的詳細,大家共同學習,歡迎指正!
1、啟動 microsoft search 服務
開始菜單-->sql程序組-->服務管理器-->下拉筐-->microsoft search 服務-->啟動它
2、
../microsoft sql server/mssql/ftdata qlserver/config/目錄里建一個非空noise.chs文件
非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個沒用的字母。
3、建立環境
打開查詢分析器-->執行下列腳本:
--------------------------------------------
create database test ---創建test數據庫
use test ---選擇test數據庫
create table dali (id int not null primary key,myimage image,filetype varchar(255),filenmae varchar(255)) ---創建dali表
--dali表中 id,myimage,filetype 三列是必須的,因為要對image列索引的話,必須要有一個主鍵列,一個image列,一個存放文件類型的列
--我們知道在windows系統中文件類型是靠擴展名來區分的所以filetype列也就是用來放 文件的擴展名
--------------------------------------------
sp_fulltext_database 'enable' --為全文索引啟用數據庫
sp_fulltext_catalog 'my_fulldir', 'create' ---創建一個叫my_fulldif的全文目錄
declare @key sysname ; select @key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='id' and a.id=b.id and b.constid=c.id and c.name like 'pk%'
exec sp_fulltext_table 'dali','create','my_fulldir',@key ----這兩句是為全文索引,對表進行標記
sp_fulltext_column 'dali','myimage','add',0x0804,'filetype' ---這句是指定myimage列為全文索引列,filetype是類型列
------------------------------------------------
4、在c盤下放一個擴展名為doc的word文件,一個擴展名為xls的excel文件,一個擴展名為htm的網頁文件,個擴展名為bmp的圖片
共4個,大家可根據實際情況放入!
5、插入數據
建立下面這個存儲過程
--------------------------------------------------
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工具將文件插入到數據庫中,如果有前臺工具可以用前臺開發工具將文件插入,這里為了演示 */
declare @exec_str varchar (255)
select @exec_str='textcopy /s '[email protected]+' /u '[email protected]+' /p '[email protected]+' /d '[email protected]+' /t'[email protected]+' /c '[email protected]+' /w"'[email protected]+'" /f"'[email protected]+'" /'[email protected]
exec master..xp_cmdshell @exec_str
----------------------------------------------------
insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一個16進制數對應image列,是必須的,不要寫null,第三列是文件類型,既擴展名
sp_textcopy '你的服務器名','sa','你的密碼','test','dali','myimage','c:/大力的doc.doc','where id=1','i'
-------依次參數是:實例名,用戶名,密碼,數據庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),i
---------------------------------------------------------------------------------------------------------------------
insert dali values(2,0x,'bmp','圖片')
sp_textcopy '你的服務器名','sa','你的密碼','test','dali','myimage','c:/圖片.bmp','where id=2','i' --注意條件是 id=2
insert dali values(3,0x,'xls','excel文件')
sp_textcopy '你的服務器名','sa','你的密碼','test','dali','myimage','c:/excel文件.xls','where id=3','i' --注意條件是 id=3
insert dali values(4,0x,'htm','網頁')
sp_textcopy '你的服務器名','sa','你的密碼','test','dali','myimage','c:/網頁.htm','where id=4','i' --注意條件是 id=4
----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應該就可以了
6、填充全文索引
sp_fulltext_table 'dali','start_full' ---第一個參數是表名,第二個參數是啟動表的全文索引的完全填充
7、可以開始你的實驗了
select * from dali where contains(myimage,'j老師')
select * from dali where contains(myimage,'海老師')
------end----------
--調試環境:sqlserver2000企業版、windows2000高級服務器
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。