OPENQUERY 查詢 Index Server 語法
SELECT *
FROM OPENQUERY(linked_server, 'query_string');
linked_server:預先建立的連結伺服器名稱 (指向 Index Server)。
query_string:傳遞給 Index Server 的 SQL 語法,以單引號包裹。
- 回傳虛擬資料表,可進一步 JOIN/WHERE 篩選。
範例:搜尋包含 "SQL" 字詞的文件
SELECT *
FROM OPENQUERY(FileSystem,
'SELECT Directory, FileName, DocAuthor, Size, Create
FROM SCOPE()
WHERE CONTAINS(Contents, ''SQL'')');
Index Server FROM 子句特殊語法
FROM [Catalog_Name..] { SCOPE( ['Scope_Arguments'] ) }
Catalog_Name:索引目錄名,連結伺服器已指定時可省略。
SCOPE():指定搜尋範圍。
DEEP TRAVERSAL OF 'path':遞迴搜尋子目錄 (預設)。
SHALLOW TRAVERSAL OF 'path':僅搜尋最上層目錄。
physical_path 實體路徑,virtual_directory 虛擬目錄。
常用文件屬性欄位 (可用於 SELECT/WHERE/ORDER BY)
| 屬性 | 型別 | 說明 | 可 ORDER BY | 可 SELECT |
| Access | datetime | 最後存取時間 | 是 | 是 |
| Characterization | ntext | 文件摘要 | 否 | 是 |
| Create | datetime | 建立時間 | 是 | 是 |
| Directory | nvarchar | 實體路徑 (不含檔名) | 是 | 是 |
| DocAuthor | nvarchar | 作者 | 是 | 是 |
| DocTitle | nvarchar | 標題 | 是 | 是 |
| FileName | nvarchar | 檔名 | 是 | 是 |
| HitCount | int | 字詞命中次數 | 是 | 是 |
| Path | nvarchar | 完整實體路徑 | 是 | 是 |
| Rank | int | 相關性分數 0-1000 | 是 | 是 |
| Size | decimal(19,0) | 檔案大小 (位元組) | 是 | 是 |
| Write | datetime | 最後寫入時間 | 是 | 是 |
應用建議
- 建立連結伺服器時選擇 Microsoft OLE DB Provider for Indexing Service。
- 查詢效能依賴 Index Server 索引品質,定期重建索引目錄。
- 大量文件搜尋建議搭配
Rank 排序,優先呈現最相關結果。