Comment implémenter une recherche rapide sur Azure Blob?

J’en ai fini avec l’écriture du code pour télécharger des fichiers (fichiers texte) sur un stockage blob azuree. Maintenant, je veux fournir une recherche basée sur le contenu des fichiers texte. Par ex. Si je recherche “Bonjour”, le nom des fichiers contenant les mots “Bonjour” doit apparaître dans les résultats de la recherche. Voici mon code de recherche

class BlobSearch { static void Main(ssortingng[] args) { ssortingng searchText = "Hello"; CloudStorageAccount account = CloudStorageAccount.Parse(azureeConSsortingng); CloudBlobClient blobClient = account.CreateCloudBlobClient(); CloudBlobContainer blobContainer = blobClient.GetContainerReference("MyBlobContainer"); blobContainer.FetchAtsortingbutes(); var blobItemList = blobContainer.ListBlobs(); foreach (var item in blobItemList) { ssortingng line = ssortingng.Empty; CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(item.Uri.ToSsortingng()); if(blockBlob.Name.Contains(".txt")) { int lineno = 1; using (var stream = blockBlob.OpenRead()) { using (StreamReader reader = new StreamReader(stream)) { while ((line = reader.ReadLine()) != null) { if (line.IndexOf(searchText) != -1) { Console.WriteLine("Line : " + lineno +" => "+ blockBlob.Name); } lineno++; } } } } } Console.WriteLine("SEARCH COMPLETE"); Console.ReadLine(); } } 

Le code ci-dessus fonctionne mais il est trop lent. Est-il possible de le faire plus rapidement ou peut améliorer le code ci-dessus.

 // get blob data CloudBlob cloudBlob = blobContainer.GetBlobReference(blobName); ssortingng text = cloudBlob.DownloadText(); 

Peut-être que le télécharger en une fois est plus rapide que de lire ligne par ligne dans une boucle?

C’est une très mauvaise façon de le faire. Ce sera très lent. La meilleure option pour cela est Azure Search . La recherche peut maintenant indexer automatiquement vos blobs!

Votre code n’est pas mauvais. Découvrez où le plus de temps est passé. Probablement réseau ou processeur. Pour le réseau, vous n’avez pas de chance. Pour le processeur, vous pouvez paralléliser.

Vous utilisez un traitement de chaîne spécifique à la culture. SsortingngComparison.Ordinal beaucoup moins de temps processeur (comme 10x). Il a une sémantique différente, cependant.