zoukankan      html  css  js  c++  java
  • Windows Search Service

    Windows Search Service是一个全方位的托管云服务,可以允许开发者通过.Net SDK或者REST API多种多样的搜索服务.

    如果你想开发一个搜索服务,那么你的服务应该包含以下组件:

     

    最简单的创建服务的步骤如下:

    1.Provisioning a service

    2.Define a shema for index

    3.Load documents to index

    4.Query the index

    今天我们将通过REST API和.NET SDK两种方式来讲述如何创建index,load document,query index等.

    方式1:REST API,将会借助PostMan这个工具。PostMan是Googel Chrome浏览器的一个组件,你可以通过访问Googel Chrome Store去下载.

    在使用PostMan访问Search Service服务时我们需要先进行配置,点击Hearder按钮,输入如下值:

    • api-key:  [Admin Key]
    • Content-Type: application/json; charset=utf-8

    1.Create an azure search index

    URL:https://[SEARCH SERVICE].search.windows.net/indexes/trails?api-version=2015-02-28

    Request Type:Put

    Raw body content:

    {
    "name": "trails",
    "fields": [
    {"name": "id", "type": "Edm.String", "key": true, "searchable": false},
    {"name": "name", "type": "Edm.String"},
    {"name": "county", "type": "Edm.String"},
    {"name": "elevation", "type": "Edm.Int32"},
    {"name": "location", "type": "Edm.GeographyPoint"} ]
    }

    Click Send.

    2.Post documents to an azure search index

    URL:https://[SEARCH SERVICE].windows.net/indexes/trails/docs/index?api-version=2015-02-28

    Request Type:Post

    Raw body content:

    {
      "value": [
        {"@search.action": "upload", "id": "233358", "name": "Pacific Crest National Scenic Trail", "county": "San Diego", "elevation":1294, "location": { "type": "Point", "coordinates": [-120.802102,49.00021] }}
    ]
    }

    Click Send.

    3.Query documents from an azure search index

    URL:https://[SEARCH SERVICE].search.windows.net/indexes/trails/docs?api-version=2015-02-28&search=trail

    Request Type:Get

    Click Send.

    方式2:.NET SDK

    下面的Demo中包含:创建Index,上传Documents,查询Docuemnts.

      1 class Program
      2     {
      3         static void Main(string[] args)
      4         {
      5             string searchServiceName = "Search Service Name";
      6             string apiKey = "API-Key";
      7 
      8             SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName,new SearchCredentials(apiKey));
      9             DeleteHotelsIndexIfExists(serviceClient);
     10             Console.WriteLine("{0}", "Create index...
    ");
     11             CreateHotelsIndex(serviceClient);
     12 
     13             Console.WriteLine("{0}", "Upload Document...
    ");
     14             SearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
     15             UploadDocuments(indexClient);
     16 
     17             Console.WriteLine("Search Document from index");
     18             SearchDocuments(indexClient, "Fancy Stay");
     19 
     20             Console.ReadKey();
     21         }
     22 
     23         private static void DeleteHotelsIndexIfExists(SearchServiceClient serviceClient)
     24         {
     25             if(serviceClient.Indexes.Exists("hotels"))
     26             {
     27                 serviceClient.Indexes.Delete("hotels");
     28             }
     29         }
     30 
     31         private static void CreateHotelsIndex(SearchServiceClient serviceClient)
     32         {
     33             var definition = new Index()
     34             {
     35                 Name = "hotels",
     36                 Fields = new[]
     37                 {
     38                     new Field("hotelId",DataType.String) { IsKey=true},
     39                     new Field("hotelName",DataType.String) { IsSearchable=true,IsFilterable=true},
     40                     new Field("baseRate",DataType.Double) {IsFilterable=true,IsSortable=true },
     41                     new Field("category",DataType.String) { IsSearchable=true,IsFilterable=true}
     42 
     43                 }
     44             };
     45 
     46             serviceClient.Indexes.Create(definition);
     47         }
     48 
     49         private static void UploadDocuments(SearchIndexClient indexClient)
     50         {
     51             var documents =
     52                 new Hotel[]
     53                 {
     54                     new Hotel()
     55                     {
     56                         HotelId="1058-441",
     57                         HotelName="Fancy Stay",
     58                         BaseRate=199.0,
     59                         category="Luxury"
     60                     },
     61                     new Hotel()
     62                     {
     63                         HotelId="666-437",
     64                         HotelName="Roach Motel",
     65                         BaseRate=79.99,
     66                         category="Budget"
     67                     },
     68                     new Hotel()
     69                     {
     70                         HotelId="970-501",
     71                         HotelName="Econo-Stay",
     72                         BaseRate=199.0,
     73                         category="Luxury"
     74                     }
     75                 };
     76         
     77             try
     78             {
     79                 indexClient.Documents.Index(IndexBatch.Create(documents.Select(doc => IndexAction.Create(doc))));
     80 
     81             }
     82             catch (IndexBatchException e)
     83             {
     84                 Console.WriteLine("Failed to index some of the documents:{0}", string.Join(",", e.IndexResponse.Results.Where(r => !r.Succeeded).Select(r => r.Key)));
     85             }
     86             Thread.Sleep(2000);
     87 
     88         }
     89 
     90         private static void SearchDocuments(SearchIndexClient indexClient,string searchText,string filter=null)
     91         {
     92             var sp = new SearchParameters();
     93 
     94             if(!string.IsNullOrEmpty(filter))
     95             {
     96                 sp.Filter = filter;
     97             }
     98 
     99             DocumentSearchResponse<Hotel> response = indexClient.Documents.Search<Hotel>(searchText,sp);
    100             foreach(SearchResult<Hotel> result in response)
    101             {
    102                 Console.WriteLine(result.Document);
    103             }
    104         }
    105 
    106 
    107         }
    View Code
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 传球游戏
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Java实现 蓝桥杯VIP 算法训练 奇偶判断
    Java实现 蓝桥杯VIP 算法训练 传球游戏
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 Hanoi问题
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Java实现 蓝桥杯VIP 算法训练 蜜蜂飞舞
    Qt: 访问容器(三种方法,加上for循环就四种了)good
  • 原文地址:https://www.cnblogs.com/jessicaxia/p/4961541.html
Copyright © 2011-2022 走看看