Windows Search 概觀

Windows 搜尋是桌面搜尋平臺,具有最常見檔類型和數據類型的立即搜尋功能,而第三方開發人員可以將這些功能延伸至新的檔類型和數據類型。

本主題的組織方式如下:

簡介

Windows 搜尋是 Windows 7 和 Windows Vista 的標準元件,預設為啟用。 Windows 搜尋會取代 Windows 桌面搜尋 (WDS),其可作為 Windows XP 和 Windows Server 2003 的載入宏。

Windows 搜尋是由三個元件所組成:

Windows Search 服務

WSS 會組織檔集合的擷取功能。 Windows 搜尋通訊協定可讓客戶端與裝載 WSS 的伺服器通訊,以發出查詢,並讓系統管理員管理編製索引伺服器。 處理檔案時,WSS 會分析一組檔、擷取有用的信息,然後組織擷取的資訊,以便有效率地傳回這些文件的屬性以響應查詢。

可查詢的檔集合包含目錄,這是 Windows 搜尋服務中組織的最高層級單位。 目錄代表一組可查詢的索引檔。 目錄包含屬性數據表,其中包含儲存在數據表數據行中的文字或值和對應位置(地區設定)。 數據表的每個數據列都會對應至目錄範圍中的個別檔,而數據表的每個數據行都會對應至 屬性。 目錄可能包含反向索引(用於快速比對),以及屬性快取(用於快速擷取屬性值)。

索引器程式會實作為在LocalSystem帳戶中執行的 Windows 服務,並且一律針對所有使用者執行(即使未登入任何使用者),這可讓 Windows 搜尋完成下列作業:

  • 維護所有用戶之間共用的一個索引。
  • 維護內容存取的安全性限制。
  • 處理網路上用戶端電腦的遠端查詢。

搜尋服務的設計目的是在編製索引時保護用戶體驗和系統效能。 下列情況會導致服務對索引進行節流或暫停編製索引:

  • 非搜尋相關進程的高 CPU 使用量。
  • 高系統 I/O 速率,包括檔案讀取和寫入、頁面檔案和檔案快取 I/O,以及對應的檔案 I/O。
  • 記憶體可用性低。
  • 電池使用時間低。
  • 儲存索引的磁碟驅動器磁碟空間不足。

開發平臺

存取搜尋 API 並建立 Windows 搜尋應用程式的慣用方式是透過殼層數據源。 Shell 數據源是用來擴充 Shell 命名空間並公開數據存放區中專案的元件。 數據存放區是數據的存放庫。 數據存放區可以公開至Shell程式設計模型,做為使用Shell數據源的容器。 數據存放區中的專案可以使用通訊協議處理程式,由 Windows 搜尋系統編製索引。

例如, ISearchFolderItemFactory 是一個元件,可以建立搜尋資料夾數據源的實例,這是Shell所提供的「虛擬」數據源,可以針對Shell命名空間中的其他數據源執行查詢並列舉結果。 它可以使用索引器或手動列舉和檢查指定範圍中的項目來執行此動作。 這個介面可讓您使用建立和修改搜尋資料夾的方法設定搜尋的參數。 如果未呼叫這個介面的方法,則會改用預設值。

最好透過殼層數據模型間接存取 Windows 搜尋功能,因為它可讓您存取殼層數據模型層級的完整 Shell 功能。 例如,您可以將搜尋的範圍設定為連結庫(這是 Windows 7 和更新版本中可用的功能),以使用連結庫資料夾做為查詢範圍。 如果這些位置位於不同的索引中,Windows 搜尋接著會匯總這些位置的搜尋結果(如果資料夾位於不同的電腦上)。 Shell 數據層也會建立項目屬性的更完整檢視,並合成一些屬性值。 它也提供 Windows 搜尋未編製索引之數據存放區的搜尋功能存取權。 例如,您可以透過殼層數據源,搜尋通用序列總線(USB)儲存裝置、使用 MTP 通訊協定的可攜式裝置,或透過殼層數據源來存取這些儲存系統。 這樣做可確保更好的用戶體驗。

Windows 搜尋具有屬性值的快取,用於實作 Windows 搜尋服務 (WSS)。 您可以使用 Windows 搜尋 OLE DB 提供者,或透過 ISearchFolderItemFactory,以程式設計方式查詢這些屬性值,其代表搜尋結果和查詢型檢視中的專案。 Windows 搜尋接著會收集及儲存篩選處理程式或屬性處理程式所發出的屬性,例如 Word 檔編製索引的專案。 此存放區會在重建索引時捨棄並重建。

第三方開發人員可以透過程式設計查詢來建立取用索引中數據的應用程式,並可延伸索引中的數據,供 Windows 搜尋編製索引的自定義檔案和項目類型。 如果您想要在 Windows 檔案總管中顯示查詢結果,您必須先實作 Shell 數據源,才能建立通訊協定處理程式來擴充索引。 不過,如果所有查詢都是以程式設計方式進行(例如透過 OLE DB),並由應用程式的程式代碼而非Shell解譯,則殼層命名空間仍為慣用,但並非必要。

Windows 需要通訊協定處理程式,才能取得檔案內容的相關信息,例如資料庫或自定義檔類型中的專案。 雖然 Windows 搜尋可以編制檔案的名稱和屬性的索引,但 Windows 沒有檔案內容的相關信息。 因此,這類項目無法在 Windows 殼層中編製索引或公開。 藉由實作自定義通訊協定處理程式,您可以公開這些專案。 如需您嘗試達成之開發人員案例所識別的處理程式清單,請參閱 Windows 搜尋即開發平臺中的「處理程式概觀」。

注意

Shell 數據源有時稱為Shell命名空間延伸模組。 處理程式有時稱為殼層延伸模組或Shell延伸模組處理程式。

 

使用者介面

在 Windows Vista 和更新版本中,Windows 搜尋會整合到所有 Windows 檔案總管視窗中,以便立即存取搜尋。 這可讓使用者依檔名、屬性和全文檢索內容快速搜尋檔案和專案。 您也可以進一步篩選結果以精簡搜尋。 以下是 Windows 搜尋的一些更多功能:

  • 每個視窗中的立即搜尋方塊都可讓您立即篩選目前處於檢視中的所有專案。 立即搜尋方塊會出現在 [開始] 功能表 中以搜尋程式或檔案,並在所有 Windows 檔案總管視窗右上角篩選顯示的結果。 立即搜尋也會整合到其他一些 Windows 功能,例如 Windows 媒體播放器,以尋找相關的檔案。
  • 檔可以標記關鍵詞,以依使用者定義的自定義準則加以分組。 標籤是使用者或應用程式指派的元數據專案,可讓您更輕鬆地根據可能不在專案名稱或內容中的關鍵詞來尋找檔案。 例如,一組圖片可能會標記為「亞利桑那假期 2009」,以便稍後搜尋任何內含字組來快速擷取。
  • Windows 檔案總管檢視中的增強數據行標頭可讓您以不同方式排序和分組檔。 例如,您可以根據名稱、日期修改、類型、大小和標籤來排序檔案。 檔也可以根據上述任何屬性進行分組,而且每個群組都可以視需要進行篩選(隱藏或顯示)。
  • 您可以根據名稱、日期修改、類型、大小和標籤來堆疊檔。 堆疊包含具有指定屬性且位於所選的資料夾的任何子資料夾中的所有檔。
  • 單擊 Windows 檔案總管搜尋窗格中的 [儲存搜尋] 按鈕,即可儲存搜尋(稍後要擷取)。 開啟已儲存的搜尋時,結果會根據原始準則動態重新填入。 如需指示,請參閱 儲存您的搜尋結果
  • 預覽處理程式和縮圖處理程式可讓用戶預覽 Windows 檔案總管中的檔,而不需要開啟建立它們的應用程式。

技術必要條件

開始閱讀 Windows 搜尋 SDK 檔之前,您應該對下列概念有基本的瞭解:

  • 如何實作Shell數據源。
  • 如何實作處理程式。
  • 如何在機器碼中運作。

Shell 數據源是用來擴充 Shell 命名空間並公開數據存放區中專案的元件。 過去,Shell 數據源稱為Shell命名空間延伸模組。 處理程式是元件物件模型 (COM) 物件,可提供Shell專案的功能。 如需您嘗試達成之開發人員案例所識別的處理程式清單,請參閱 Windows 搜尋即開發平臺中的「處理程式概觀」。

如需 Windows 搜尋 SDK 互操作性元件的詳細資訊,以使用 Windows 搜尋所公開的 COM 物件,以及使用 Managed 程式代碼的其他程式,請參閱 搭配 Shell 數據和 Windows 搜尋使用 Managed 程式代碼。 不過,請注意,篩選、屬性處理程式和通訊協定處理程式必須以機器碼撰寫。 這是因為多個載入宏執行程序的潛在 Common Language Runtime (CLR) 版本控制問題。 不熟悉 C++ 的開發人員可以開始使用 Visual C++ 開發人員中心和Windows 開發使用者入門

SDK 下載和內容

除了符合列出的技術必要條件之外,您也必須下載 Windows SDK 以取得 Windows 搜尋連結庫。 Windows 搜尋程式代碼範例包含實用的程式代碼範例,以及使用 Managed 程式代碼進行開發的互操作性元件。

Windows 搜尋 SDK 檔

Windows 搜尋 SDK 文件的內容如下:

Windows 搜尋會取代 Windows 桌面搜尋 (WDS),其可作為 Windows XP 和 Windows Server 2003 的載入宏。 WDS 以效能、可用性和擴充性增強功能取代舊版 Windows 的索引服務。 新的開發平臺支持產生更安全且穩定系統的需求。 雖然新的查詢平臺與 Microsoft Windows 桌面搜尋 (WDS) 2.x 不相容,但針對舊版 WDS 撰寫的篩選和通訊協定處理程式可以更新為使用 Windows Search。 Windows 搜尋也支援新的屬性系統。 如需篩選、屬性處理程式和通訊協定處理程式的相關信息,請參閱 擴充索引

Windows 搜尋內建於 Windows Vista 和更新版本,並可作為 WDS 2.x 的可轉散發更新,以支援下列操作系統:

  • 32 位版本的 Windows XP Service Pack 2 (SP2)。
  • 所有以 x64 為基礎的 Windows XP 版本。
  • Windows Server 2003 Service Pack 1 (SP1) 和更新版本。
  • 所有以 x64 為基礎的 Windows Server 2003 版本。

執行這些操作系統的系統必須已安裝 Windows 搜尋,才能執行針對 Windows 搜尋撰寫的應用程式。

其他資源

Windows Search 做為開發平台

Windows 搜尋支持的語言

搭配 Shell 資料和 Windows Search 使用 Managed 程式碼