項目需對上傳文檔內容進行全文搜索。方案:文件落盤 → Windows 索引服務建立全文索引 → SQL Server 通過鏈接服務器查詢索引目錄 → 應用層拼接 SQL 執行搜索。
GUID + 原始後綴(如 A1B2C3D4.pdf),保證唯一且保留副檔名供索引服務識別格式。GUID、業務元數據(標題、上傳人、時間等),不存二進制內容。DCSII(需與後續鏈接服務器一致),選擇索引文件存放目錄。D:\UploadFiles)。EXEC sp_addlinkedserver
@server = 'DCS', -- 鏈接服務器名稱
@srvproduct = 'Index Server',
@provider = 'MSIDXS', -- 索引服務 OLE DB Provider
@datasrc = 'DCSII'; -- 索引服務目錄名
SELECT Q.*
FROM OPENQUERY(DCS,
'SELECT FileName, Size, DocAuthor, Path
FROM SCOPE()
WHERE CONTAINS(''關鍵詞1 AND 關鍵詞2'')'
) AS Q;
關鍵點:
SCOPE() 表示搜索整個目錄。CONTAINS 支持 AND/OR/NOT、通配符 *、短語 "exact phrase"、近似 NEAR。OPENQUERY,需在應用層拼接完整字符串後 EXEC(sp_executesql ...)。| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| Windows 索引服務 + 鏈接服務器 | 文件不入庫、備份輕量、利用系統組件 | 跨跳查詢延遲、配置相對繁瑣、SQL Server 2008+ 已內置全文 | 舊系統改造、文件量大、不想入庫 |
| SQL Server 內置全文檢索 | 一體化、支持語義搜索、ACID 一致性、備份還原無縫 | 文件存 varbinary(max) / FileTable 佔用庫空間、備份變大 | 新系統、文件量中等、需強一致性 |
| Elasticsearch / Solr | 專業全文引擎、分布式、高性能、豐富分析器 | 架構複雜、需同步機制、運維成本高 | 高併發、多語言、複雜查詢、日志分析 |
cidaemon.exe 進程 CPU/內存。