在實際操作中有時會通過SQL Server查詢上傳文件的內容,我們主要是通過MSDN來了解Windows索引服務,可以實現對文件的全文檢索,并可以通過SQL Server進行查詢。本文將兩者結合后實現對上傳文件的全文檢索。
方案描述:
1.改變文件存儲時的文件名
2.配置索引服務器,并將索引服務器與MS SQL Server關聯。
3.修改SQL語句,將進行全文SQL Server查詢語句的內容加入查詢條件中
文件的存儲方式:
為了方便存儲以及方便索引,我們將上傳的文件存儲到一個目錄里面,為了保證上傳的文件名不重復,采用GUID作為文件名,并且通過這個GUID于數據庫記錄相關聯。同時,文件的后綴還保持原始文件的后綴,讓索引服務能夠識別該文檔。
配置索引服務
進入計算機管理(Computer Management)程序(右鍵”我的電腦”->”管理”),并找到索引服務(Index Service)
配置索引服務的功能
(1)右鍵選擇索引服務彈出一個菜單
(2)選擇New->Catalog(新建一個編錄)
設置新增加的編錄
(1)輸入編錄的名字(這個名字需要與數據庫進行關聯,要注意命名,這里假設DCSII
(2)點Browse進入選擇索引服務運行目錄窗體
(3)選擇前面創(chuàng)建的索引運行目錄(任意地方)
(4)點確定完成本次操作
在編錄創(chuàng)建號以后,需要給編錄增加目錄
(1)右鍵選擇剛剛創(chuàng)建的編錄
(2)選擇New->Directory(新建目錄)
新建索引目錄
(1)點擊Browse進入目錄選擇頁面
(2)選擇要進行全文檢索文件的目錄
(3)確定完成本次操作
完成創(chuàng)建后啟動索引服務
(1)啟動索引服務
(2)索引服務啟動成功后索引編錄的信息,可以看到編錄信息就表示服務已經啟動成功。
將索引服務和SQL數據庫關聯:
在SQL 查詢分析器(SQL Query Analyer)里執(zhí)行下面的存儲過程
EXEC sp_addlinkedserver Dcs, -- 連接服務器的名字,到后面SQL Server查詢的時候要用到
'Index Server',
'MSIDXS',
'DCSII' -- 索引服務里新建的編錄名字
索引服務的性能調整方法1
(1)右鍵選擇索引服務
(2)選擇 All Tasks-> Tune Perrformance
(3)選擇用戶自定義
(4)點擊Customize進入性能調整窗體
(5)將Index和Querying的屬性移動到最右邊
(6)點確定完成操作
性能調整方法2
如果服務器不需要對整個系統(tǒng)的文件進行索引,可以停止或者刪除System編錄。
MS SQL對索引服務器的調用
1.通過sql語句SQL Server查詢連接服務器的內容
SELECT Q.*
FROM OpenQuery(dcs, --連接服務器名字
'SELECT FileName, Size, DocAuthor, path --在連接服務器里的sql語句
- FROM SCOPE()
- WHERE CONTAINS(''番號 and abc'') '
- ) AS Q
2.因為SQL語句不支持動態(tài)輸入的字符串,因此SQL Server查詢字符串只好在C#代碼里來進行拼接
其它解決方法:
在SQL Server 2000數據庫里按全文搜索功能,用image字段存儲文件內容,并新增一個字段存放文件類型,然后在通過企業(yè)管理器新建全文索引項的時候將這兩個字段匹配就可以。不過從數據庫的/率以及今后數據庫備份和恢復的效率上來看,將文件放在數據庫的設計略顯不足。
本文地址:【伊甸網】http://www.edenw.com/tech/devdeloper/database/2010-07-14/4681.html