共用方式為


如何編製應用程式本機資料的索引

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

您可以透過 Windows Search 服務 (WSS) 來編製本機儲存的應用程式資料的索引。

如果您的應用程式管理像是文件、郵件或媒體 (相片、音樂、影片等) 檔案,就有以結構化方式編製檔案的內容或屬性索引的中心需求,讓使用者能夠以快速有效的方式管理和擷取資料。您不需要在應用程式內建立索引子。如果您是應用程式開發人員,有一個方便安全的選項:您只要啟用 WSS 便能夠為應用程式資料編製索引。

使用 WSS 來編製應用程式資料索引的主要優點如下:

  • WSS 支援為最常用文件類型的完整內容文字編製索引。此外,WSS 還支援為檔案屬性編製索引。
  • 在內建的搜尋協定與檔案 API 內,可以輕鬆擷取並重複使用已編製索引的資料。
  • Windows Search 重視檔案系統的安全性設定,這些設定可維護已編製索引的應用程式資料並將其安全地儲存在 Windows 索引子內。

Windows Search 可搭配所有 Windows 市集應用程式使用,包含使用 JavaScript、C#、C++ 與 VB.Net 撰寫的應用程式。

要求 Windows Search 為應用程式資料編製索引並不困難。您需要在應用程式資料資料夾下建立名為 indexed 的資料夾,然後將需要編製索引的內容存放在其中。Windows Search 會將 indexed 資料夾視為如同在硬碟上的任何其他編製索引的位置一樣。 這個資料夾及其所有子資料夾中的檔案內容或檔案中繼資料 (屬性) 都將編製索引。以下是重要考量的清單:

  1. indexed 資料夾必須遵循下列指導方針:
    • indexed 資料夾必須建立在 localFolder 根目錄底下。Windows Search 會對這個資料夾中的內容編製深度索引。以本機方式儲存於這個資料夾或其子資料夾的任何檔案 (包括子資料夾的所有層級),都會編製索引。 每個應用程式只允許一個 indexed 資料夾。
    • 資料夾名稱 indexed 不區分大小寫。
    • 雖然應用程式資料資料夾在 Windows 執行階段 API 中稱為 localFolder,但在實體硬碟上稱為 LocalState。如果您要存取這個資料夾以進行測試,請使用這個資料夾路徑: %user%\ AppData\Local\Packages\%packageName%\LocalState
    • indexed 底下的資料夾結構可以很深,但是 Windows API 不允許檔案/資料夾的路徑長度超過 MAX_PATH (定義為 260 個字元)。因此您必須確定 indexed 資料夾底下的檔案或資料夾不會超過這個限制。如需 MAX_PATH 的詳細資訊,請參閱最大路徑長度限制
  2. Windows Search 只會將本機儲存的資料編製索引。也就是說,只有以本機方式儲存在 indexed 資料夾或其子資料夾內的檔案才會編製索引。
  3. 安裝期間無法建立 indexed 資料夾。 該資料夾只能在應用程式執行時建立。視內容大小而定,Windows Search 需要較長時間才能完成,因此建議您在應用程式第一次執行時便建立 indexed 資料夾。建立 indexed 資料夾後,Windows Search 將會對應用程式內容自動編製索引。如果修改 (新增、刪除或更新) 檔案或子資料夾,Windows Search 還會自動重新排程編製索引程序,讓索引子隨著變更進行更新。請注意,Windows Search 會監視 CPU 使用率,以本身的排程最佳化索引編製程序。

安全性

WSS 重視 Windows 檔案系統的安全性設定,因此已編製索引的應用程式資料可安全地儲存在索引子中。特別的是:

  • 當多個使用者帳戶位於同一部電腦時: Windows 市集應用程式會依據每個使用者帳戶進行安裝。如果同一部電腦上有多個使用者使用相同的應用程式,每個應用程式執行個體會在不同的實體路徑下建立本身的 indexed 資料夾。因此,除非授與某使用者存取該實體路徑,否則該使用者無法存取其他帳戶下已編製索引的資料。
  • 在為多個應用程式的應用程式資料編製索引時: Windows 檔案系統不允許某個應用程式直接存取另一個應用程式的資料。因此,應用程式沒有另一個應用程式已編製索引資料的存取權。

擷取已編製索引的內容

為應用程式資料編製索引後,應用程式就可以透過檔案 API 擷取資料。

相關主題

Windows Search 服務

Windows Search 服務如何透過 IFilters 進行內容編製索引

將搜尋新增至 Windows 市集應用程式