首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 全文搜尋完整部署指南:從服務啟動到索引填充

     編輯:關於SqlServer

SQL Server 2000 的全文搜尋功能讓資料庫具備類似搜尋引擎的字詞檢索能力,支援 Office 文件、HTML、純文字等多種格式。本文整理從環境準備、目錄建立、資料匯入到索引填充測試的完整實作流程,並針對常見工具缺失與連線錯誤提供解決方案。

前置環境準備

  1. 啟動 Microsoft Search 服務:透過「服務管理器」或「服務」嵌入式管理單元啟動 Microsoft Search 服務(通常預設已啟動)。
  2. 建立噪音詞檔:在 MSSQL\FTDATA\SQLServer\Config 目錄下建立非空的 noise.chs 檔案(簡體中文斷詞用),若目錄下已有相關檔案可略過。

透過查詢分析器建立全文索引環境(腳本化部署)

-- 1. 建立測試資料庫與資料表
CREATE DATABASE test; GO
USE test; GO
CREATE TABLE dali (
    ID INT NOT NULL PRIMARY KEY,
    MyImage IMAGE,
    FileType VARCHAR(255),
    FileName VARCHAR(255)
); -- 必須具備:主鍵、IMAGE 欄位、檔案類型欄位

-- 2. 啟用資料庫全文功能
EXEC sp_fulltext_database 'enable'; GO

-- 3. 建立全文目錄
EXEC sp_fulltext_catalog 'My_FullDir', 'create'; GO

-- 4. 註冊資料表至全文目錄(指定唯一鍵索引)
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; GO

-- 5. 指定全文索引欄位與類型欄位
EXEC sp_fulltext_column 'dali', 'MyImage', 'add', 0x0804, 'FileType'; GO

資料匯入實戰:使用 textcopy.exe 工具

  1. 準備一個 .htm 檔案(如 C:\index.htm)。
  2. 插入一筆「佔位」資料:INSERT dali VALUES (1, 0x, 'htm', '網頁');
  3. 建立匯入預存程序 sp_textcopy 呼叫 textcopy.exe:
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
BEGIN
    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;
END; GO
  1. 執行匯入:EXEC sp_textcopy 'GAOLONG','gaolong1','831001','test','dali','MyImage','C:\index.htm','WHERE ID=1','I';

常見錯誤與解決方案

錯誤現象原因解決方法
'textcopy' 不是內部或外部命令...系統找不到 textcopy.exe從 MSSQL\Binn 複製 textcopy.exe 到 80\Tools\Binn 目錄
DB-Library Error 10004: 無法連接...伺服器名/登入參數錯誤檢查伺服器名稱(非實例名)、帳號密碼、網路連通性

索引填充與測試

-- 啟動完全填充
EXEC sp_fulltext_table 'dali', 'start_full'; GO

-- 測試查詢
SELECT * FROM dali WHERE CONTAINS(MyImage, '標題');
SELECT * FROM dali WHERE FREETEXT(MyImage, '關鍵字');

圖形化介面替代方案(企業管理器)

  1. 右鍵資料表 → 「全文索引資料表」 → 「在資料表上定義全文索引」 → 選擇欄位 → 建立目錄(如 proCatalog)。
  2. 右鍵目錄 → 「啟動完全填充」。
  3. 使用 CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE 進行檢索。

核心系統預存程序速查

  • sp_fulltext_database:啟用/停用資料庫全文功能
  • sp_fulltext_catalog:建立/刪除/啟動/停止全文目錄
  • sp_fulltext_table:註冊/啟用/停用資料表全文索引
  • sp_fulltext_column:加入/移除全文索引欄位

掌握腳本化部署與圖形化操作雙軌技能,才能在開發、測試、生產環境間靈活遷移全文搜尋方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved