如何在應用程式本機資料上執行豐富的查詢

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

了解應用程式如何使用 Windows.Storage 命名空間中的檔案 API,針對應用程式本機儲存資料中的檔案執行多格式查詢。

Windows 市集應用程式可以使用檔案 API,對儲存在使用者媒體櫃中的內容執行多格式查詢。 這對於管理多格式內容 (例如文件、郵件或媒體) 的應用程式來說特別有價值。媒體可以包括相片、音樂及視訊。您可以使用這些查詢來新增功能,例如針對檔案內儲存的中繼資料進行的全文檢索搜尋和查詢式篩選。

您必須知道的事

技術

先決條件

指示

步驟 1: 針對應用程式資料啟用多格式查詢

為提供檔案的多格式查詢功能,您必須使用 Windows Search 服務編製這些檔案的索引。 一般而言,系統並不會對應用程式本機儲存資料中的檔案編製索引。這是因為當應用程式並不需要多格式查詢功能時,編製索引會造成不必要的效能負擔。

如果要針對應用程式資料內的檔案啟用索引功能,您必須在應用程式資料資料夾底下建立名為 indexed 的資料夾。然後,將您想要編製索引的內容儲存到該資料夾。Windows Search 服務會對這個 indexed 資料夾和所有子資料夾的檔案內容和中繼資料編製索引。

JJ835814.wedge(zh-tw,WIN.10).gif針對應用程式資料內的檔案啟用索引功能

  1. 規劃放置於 localFolder 底下的 indexed 資料夾。以下是關於 indexedlocalFolder 的一些規則:

    • indexed 資料夾必須在 localFolder 根目錄底下建立。

    • Windows Search 服務會對這個資料夾內的檔案屬性和內容進行深度的索引編製。也就是說,Windows Search 服務會對以本機方式儲存於這個資料夾或其子資料夾 (包含所有層級的子資料夾) 內的任何檔案編製索引。

      Windows Search 服務支援 HTML、PDF、XML 以及 RTF 檔案格式、Microsoft Office 檔案的檔案格式等等的全文檢索索引和搜尋。如需 Windows Search 服務篩選的相關資訊,請參閱 Windows 隨附的篩選條件處理常式

    • 每個應用程式只能有一個 indexed 資料夾。

    • 資料夾名稱 indexed 不區分大小寫。

    • 雖然應用程式資料資料夾在 Windows 執行階段 API 中稱為 localFolder,但在實體硬碟上稱為 LocalState。如果您要存取這個資料夾以進行測試,請使用這個資料夾路徑:

      %user%\ AppData\Local\Packages\%packageName%\LocalState
      
    • indexed 資料夾底下的資料夾結構可以很深,但是 Windows API 不允許檔案或資料夾的路徑長度超過 MAX_PATH (定義為 260 個字元)。因此您必須確定 indexed 資料夾底下的檔案或資料夾不會超過這個限制。如需 MAX_PATH 的詳細資訊,請參閱最大路徑長度限制

    • Windows Search 服務在其他位置編製索引時類似,只有以本機方式儲存的資料才能被編製成索引。也就是說,只有以本機方式儲存在 indexed 資料夾或其子資料夾內的檔案才能編製成索引。

  2. localFolder 底下建立 indexed 資料夾。您無法在安裝期間建立 indexed 資料夾。只有在應用程式執行時,您才能建立該資料夾。以下程式碼片段說明如何在應用程式第一次執行時建立 indexed 資料夾:

    
    Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", 
        Windows.Storage.CreationCollisionOption.openIfExists).then(
                    function (result) {
                       //your code here
                    });
    
  3. 將您的檔案和資料夾儲存到這個 indexed 資料夾。您可以使用 StorageFolderIStorageFolder 來儲存檔案和資料夾。接著,就能夠使用 Windows.Storage 命名空間中的檔案 API,對儲存在這個 indexed 資料夾中的所有檔案和資料夾執行多格式查詢。

步驟 2: 擷取已編製索引的內容

Windows Search 服務將應用程式資料編製索引後,應用程式就可以透過 Windows.Storage 命名空間中的檔案 API 擷取資料。例如,若要執行查詢,請使用 StorageFolderCreateFileQueryCreateFolderQuery,它代表 indexed 資料夾或 indexed 資料夾底下的任何子資料夾。

相關主題

Windows.Storage

Windows Search 服務

StorageFolder

IStorageFolder

ApplicationData.localFolder

IFilter