Индексация локальных данных приложения
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Индексировать локально сохраненные данные для вашего приложения можно с помощью службы Windows Search (WSS).
Если ваше приложение управляет такими файлами, как документы, почтовые сообщения или мультимедиа (фотографии, музыка, видео и т. д.), основное требование состоит в том, чтобы структурно индексировать содержимое или свойства файлов, позволяя пользователям быстро и эффективно управлять данными и извлекать их. В приложении не нужно создавать индексатор. Вы как разработчик приложения можете выбрать удобный и безопасный вариант: просто включить службу WSS для индексации данных вашего приложения.
Основные преимущества использования WSS для индексации данных приложения:
- Служба WSS поддерживает индексацию всего текстового содержимого наиболее широко используемых типов документов. Служба WSS также поддерживает индексацию свойств файлов.
- Благодаря встроенному контракту "Поиск" и API файлов индексированные данные можно легко извлечь и повторно использовать.
- Windows Search учитывает параметры безопасности файловой системы, обеспечивающие безопасное сохранение индексированных данных приложения в индексаторе Windows.
Windows Search работает со всеми приложениями Магазина Windows, включая приложения, написанные на JavaScript, C#, C++ и VB.Net.
Включение службы Windows Search для приложения
Запрос Windows Search на индексацию данных приложения создать очень легко. В папке с данными приложения необходимо создать папку с именем indexed и сохранить в ней содержимое, которое требуется проиндексировать. Windows Search работает с индексируемой папкой так же, как и с любым другим расположением для индексации на жестком диске. Windows Search проиндексирует содержимое файлов или метаданные (свойства) файлов в этой папке и всех вложенных папках. Ниже представлен перечень важных аспектов:
- Индексируемая папка должна соответствовать следующим требованиям.
- Папка indexed должна создаваться в корне каталога localFolder. Windows Search выполняет глубокое индексирование содержимого этой папки. Индексируются все файлы, локально сохраняемые в этой папке или во вложенных в нее папках (включая все уровни вложения). В приложении допускается существование только одной папки indexed.
- Имя папки indexed определяется без учета регистра.
- В API среды выполнения Windows папка данных приложения называется localFolder, но на физическом жестком диске она имеет имя LocalState. Чтобы получить доступ к этой папке для тестирования, используйте следующий путь: %user%\ AppData\Local\Packages\%packageName%\LocalState
- Глубина вложенности в папке indexed может быть достаточно большой, но API Windows не допускает, чтобы полная длина пути к файлу превышала значение MAX_PATH (260 символов). Поэтому необходимо убедиться в том, что длина пути к файлам или папкам в папке indexed не превышает этого ограничения. Подробнее о MAX_PATH см. в разделе об ограничении максимальной длины пути.
- Windows Search индексирует только локально сохраняемые данные. Другими словами, индексируются только файлы, локально сохраняемые в папке indexed или во вложенных в нее папках.
- Папку indexed нельзя создать во время установки. Она создается уже во время работы приложения. Так как Windows Search потребуется некоторое время для выполнения индексации в зависимости от объема содержимого, рекомендуется создать папку indexed при первом запуске приложения. После создания папки indexed Windows Search автоматически проиндексирует содержимое приложения. Если файлы и вложенные папки изменялись (что-то добавилось, обновилось или было удалено), Windows Search автоматически изменит график индексирования и обновит индексатор. Обратите внимание, что Windows Search следит за использованием ЦП для оптимизации процесса индексирования по своему расписанию.
Безопасность
Служба WSS учитывает параметры безопасности файловой системы Windows, чтобы сохранение индексированных данных приложения в индексаторе было безопасным. В частности:
- Если на одном компьютере имеется несколько учетных записей пользователей, приложения Магазина Windows устанавливаются для каждой учетной записи пользователя. Если на одном компьютере с одним и тем же приложением работает несколько пользователей, каждый экземпляр приложения создает собственную папку indexed с разными физическими путями. Следовательно, пользователю не удастся получить доступ к индексированным данным для других учетных записей, если ему не предоставлен доступ к соответствующему физическому пути.
- Если индексируются данные для нескольких приложений, файловая система Windows не разрешает одному приложению прямой доступ к данным другого приложения. Поэтому приложение не имеет доступа к индексированным данным другого приложения.
Извлечение индексируемого содержимого
После индексации данных приложения оно может извлечь данные с помощью API файлов.
Связанные разделы
Метод индексации содержимого службой Windows Search с помощью фильтров IFilter