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.

 class Program
{
static void Main(string[] args)
{
string searchServiceName = "Search Service Name";
string apiKey = "API-Key"; SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName,new SearchCredentials(apiKey));
DeleteHotelsIndexIfExists(serviceClient);
Console.WriteLine("{0}", "Create index...\n");
CreateHotelsIndex(serviceClient); Console.WriteLine("{0}", "Upload Document...\n");
SearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
UploadDocuments(indexClient); Console.WriteLine("Search Document from index");
SearchDocuments(indexClient, "Fancy Stay"); Console.ReadKey();
} private static void DeleteHotelsIndexIfExists(SearchServiceClient serviceClient)
{
if(serviceClient.Indexes.Exists("hotels"))
{
serviceClient.Indexes.Delete("hotels");
}
} private static void CreateHotelsIndex(SearchServiceClient serviceClient)
{
var definition = new Index()
{
Name = "hotels",
Fields = new[]
{
new Field("hotelId",DataType.String) { IsKey=true},
new Field("hotelName",DataType.String) { IsSearchable=true,IsFilterable=true},
new Field("baseRate",DataType.Double) {IsFilterable=true,IsSortable=true },
new Field("category",DataType.String) { IsSearchable=true,IsFilterable=true} }
}; serviceClient.Indexes.Create(definition);
} private static void UploadDocuments(SearchIndexClient indexClient)
{
var documents =
new Hotel[]
{
new Hotel()
{
HotelId="1058-441",
HotelName="Fancy Stay",
BaseRate=199.0,
category="Luxury"
},
new Hotel()
{
HotelId="666-437",
HotelName="Roach Motel",
BaseRate=79.99,
category="Budget"
},
new Hotel()
{
HotelId="970-501",
HotelName="Econo-Stay",
BaseRate=199.0,
category="Luxury"
}
}; try
{
indexClient.Documents.Index(IndexBatch.Create(documents.Select(doc => IndexAction.Create(doc)))); }
catch (IndexBatchException e)
{
Console.WriteLine("Failed to index some of the documents:{0}", string.Join(",", e.IndexResponse.Results.Where(r => !r.Succeeded).Select(r => r.Key)));
}
Thread.Sleep(); } private static void SearchDocuments(SearchIndexClient indexClient,string searchText,string filter=null)
{
var sp = new SearchParameters(); if(!string.IsNullOrEmpty(filter))
{
sp.Filter = filter;
} DocumentSearchResponse<Hotel> response = indexClient.Documents.Search<Hotel>(searchText,sp);
foreach(SearchResult<Hotel> result in response)
{
Console.WriteLine(result.Document);
}
} }

Windows Search Service的更多相关文章

  1. Windows Azure Service Bus Notification Hub推送通知

    前言 随着Windows Azure 在中国的正式落地,相信越来越多的人会体验到Windows Azure带来的强大和便利.在上一篇文章中, 我们介绍了如何利用Windows Azure中的Servi ...

  2. Windows Azure Service Bus Topics实现系统松散耦合

    前言 Windows Azure中的服务总线(Service Bus)提供了多种功能, 包括队列(Queue), 主题(Topic),中继(Relay),和通知中心(Notification Hub) ...

  3. Windows Azure Service Bus (2) 队列(Queue)入门

    <Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bu ...

  4. Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue

    <Windows Azure Platform 系列文章目录> 在之前的Azure Service Bus中,我们已经介绍了Service Bus 队列(Queue)的基本概念. 在本章中 ...

  5. Windows Azure Service Bus (4) Service Bus Queue和Storage Queue的区别

    <Windows Azure Platform 系列文章目录> 熟悉笔者文章的读者都了解,Azure提供两种不同方式的Queue消息队列: 1.Azure Storage Queue 具体 ...

  6. Windows Azure Service Bus (5) 主题(Topic) 使用VS2013开发Service Bus Topic

    <Windows Azure Platform 系列文章目录> 项目文件,请在这里下载 在笔者之前的文章中Windows Azure Service Bus (1) 基础 介绍了Servi ...

  7. 除非 Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站。目前,这两项服务均处于停止状态。

    win7 IIS 所有网站都停止了,启动提示: 除非 Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站.目前,这两项服务均 ...

  8. paip . 解决spring No unique bean of type [com.mijie.homi.search.service.index.MoodUserIndexService]

    paip . 解决spring No unique bean of type   [com.mijie.homi.search.service.index.MoodUserIndexService] ...

  9. 关于windows的service编程

    最近需要学习下windows的service编程框架,查了下msdn发现不知所云.于是谷歌之,发现了一个非常不错的文章,重点推荐讲的非常详细,深入,看完之后基本上就能很清楚windows的servic ...

随机推荐

  1. ASP.NET MVC2.0学习笔记:路由设置

    Route设置 在 <Professional in ASP.NET MVC2.0>一书的第四章,主要讲述了Route的简单设置.格式化设置.约束设置.区域路由.匹配文件.路由调试以及对R ...

  2. WinForm中 事件 委托 多线程的应用

    WinForm中 事件 委托 多线程的应用[以一个下载进度条为例] 第一步:首先我们创建一个winfor的项目 第二步:我们建一个窗体在一个窗体里面 打开一个另外的窗体 另外的窗体有一个按钮 点击后就 ...

  3. VS调试的简单技巧

    学习之路三十二:VS调试的简单技巧   这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧 ...

  4. JAVA多线程suspend()、resume()和wait()、notify()的区别

    suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的 resume() 被调用,才能使得线程重新进入可执行状态.典型 ...

  5. Web前端优化需要注意的点

    关键在于:如何提高页面访问速度:如何减少服务器负载和带宽压力: 1.      cache:包括数据库表的缓存,浏览器缓存,服务器端缓存(代理服务器缓存,CDN缓存,反向代理服务器缓存),web应用程 ...

  6. UE4新手编程之创建C++项目

    虚幻4中常用的按键和快捷键 虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷.下面将列举它们出来: 按键   动作  鼠标左键   选 ...

  7. 使用pip安装报错的处理方法

    在新的机子上使用pip安装程序一直报错: Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connect ...

  8. DataFrame的构建及一些操作

    一.DataFrame构建 1.用多个列表构建 #构建DataFrame #self._stkpool_uni.codes.end_date(这些list用append填充值,保证各个list中元素个 ...

  9. oracle——用户

    新增用户 用system用户登录 CREATE USER TEST1 IDENTIFIED BY TEST1; CREATE USER:创建用户命令,后跟用户名: IDENTIFIED BY:后跟密码 ...

  10. UOJ#117. 欧拉回路

    #117. 欧拉回路 题目描述 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次. 一共两个子任务: 这张图是无向图.(50分) 这张图是有向图.(5 ...