Azure BlobStorage blob到索引

时间:2016-12-03 16:19:24

标签: c# azure azure-storage azure-storage-blobs

是否可以将文档上传到blob存储区并执行以下操作:

  1. 抓取文件内容并添加到索引。
  2. 从第1点的内容中抓取关键短语并添加到索引。
  3. 我希望关键短语可供搜索。

    我的代码可以将文档上传到blobstorage,它完美无缺,但获得此索引(我知道)的唯一方法是使用"导入数据"在Azure搜索服务中,该服务使用预定义字段创建和索引 - 如下所示:

    enter image description here

    当只需要这些字段并且索引每5分钟自动更新时,这非常有用。但是当我想要一个自定义索引

    时就成了问题

    但是,我想要的唯一字段如下:

    • FILEID
    • fileText(这是文档的内容)
    • blobURL(允许下载文件)
    • keyPhrases(将从fileText中提取 - 我也有代码执行此操作)

    我唯一的问题是我需要能够检索Document内容(fileText)才能获得keyPhrases,但据我理解,如果文档内容已经在索引中,我只能这样做我可以访问该内容吗?

    我对Azure的了解非常有限,并且很难找到与我想要做的任何事情相似的事情。

    我用来将文档上传到blob存储的代码如下:

    public CloudBlockBlob UploadBlob(HttpPostedFileBase file)
        {
            string searchServiceName = ConfigurationManager.AppSettings["SearchServiceName"];
            string blobStorageKey = ConfigurationManager.AppSettings["BlobStorageKey"];
            string blobStorageName = ConfigurationManager.AppSettings["BlobStorageName"];
            string blobStorageURL = ConfigurationManager.AppSettings["BlobStorageURL"];
            string UserID = User.Identity.GetUserId();
            string UploadDateTime = DateTime.Now.ToString("yyyyMMddhhmmss").ToString();
    
            try
            {
                var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"), UserID + "_" + UploadDateTime + "_" + file.FileName);
    
                file.SaveAs(path);
    
                var credentials = new StorageCredentials(searchServiceName, blobStorageKey);
    
                var client = new CloudBlobClient(new Uri(blobStorageURL), credentials);
    
                // Retrieve a reference to a container. (You need to create one using the mangement portal, or call container.CreateIfNotExists())
                var container = client.GetContainerReference(blobStorageName);
    
                // Retrieve reference to a blob named "myfile.gif".
                var blockBlob = container.GetBlockBlobReference(UserID + "_" + UploadDateTime + "_" + file.FileName);
    
                // Create or overwrite the "myblob" blob with contents from a local file.
                using (var fileStream = System.IO.File.OpenRead(path))
                {
                    blockBlob.UploadFromStream(fileStream);
                }
    
                System.IO.File.Delete(path);
    
                return blockBlob;
            }
            catch (Exception e)
            {
                var r = e.Message;
                return null;
            }
        }
    

    我希望我能提供太多信息,但我不知道如何解释我在寻找什么。如果我没有意义,请告诉我,以便我可以解决我的问题。

    我不是在寻找讲义代码,只是寻找正确方向的推力。

    我将不胜感激。

    谢谢!

0 个答案:

没有答案