В моем приложении UWP я создаю файлы, которые должны индексироваться индексом Windows, чтобы их можно было найти позже с помощью полнотекстового поиска.
public async Task TestFullTextSearch()
{
StorageFolder folder = ApplicationData.Current.LocalCacheFolder;
CreateFile(folder.Path + Path.DirectorySeparatorChar + "myDocument.txt", "Some text 123");
await Task.Delay(5000); // to ensure that the file is already index before querying
int numberOfResults = await SearchForResults(folder, "*");
// numberOfResults is 1 in Windows 10, 1709 and 0 in 1803
}
public void CreateFile(string path, string text)
{
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine(text);
}
}
private async Task<int> SearchForResults(StorageFolder folder, string searchString)
{
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, new List<string>() { "*" });
queryOptions.UserSearchFilter = searchString;
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = await queryResult.GetFilesAsync();
return files.Count;
}
В приведенном выше примере при выполнении кода в Windows 10 1709 numberOfResults
равно 1. При выполнении того же кода в Windows 10 1803 numberOfResults
равно 0.
В обоих случаях местоположение добавляется в Windows-индекс (добавляется через «Параметры индексирования»).
Я проверил разрешения, и они выглядят точно так же. Я также попытался создать файл вручную в соответствующей папке и использовать поиск Windows в проводнике Windows, он показывает 0 результатов (при 1803, при 1709 результаты показываются, как и ожидалось). В некоторых случаях созданный файл попал в запрос и стал доступен для поиска, я понятия не имею, почему.
Я пробовал это на 3 разных машинах с Windows 10, 1803, и результаты абсолютно одинаковы (и на нескольких машинах 1709, здесь все работает отлично).