我完成了编写代码以将文件(文本文件)上传到azure blob存储。现在我想提供基于文本文件内容的搜索。对于前者如果我搜索“Hello”,则包含“Hello”字样的文件名称应出现在搜索结果中。这是我的搜索代码
class BlobSearch
{
static void Main(string[] args)
{
string searchText = "Hello";
CloudStorageAccount account = CloudStorageAccount.Parse(azureConString);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("MyBlobContainer");
blobContainer.FetchAttributes();
var blobItemList = blobContainer.ListBlobs();
foreach (var item in blobItemList)
{
string line = string.Empty;
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(item.Uri.ToString());
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();
}
}
上面的代码正在运行,但速度太慢了。有没有办法更快地完成它或者可以改进上面的代码。
答案 0 :(得分:0)
Blob存储对于这种工作并不是很好,因为通过HTTP进行的文件读取不是非常快或随机访问。你需要的是像Lucene这样的搜索索引器。
这个Lucene.Net库看起来可能就像你之后的那样: