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. QzzmServer v2.0正式版发布

                                 V2.1升级程序已发布,具体见下文                                首先,感谢网友的热情的测评及反馈,现Qzzm ...

  2. .NET接口和类 反射的差异性发现

    1 背景 在项目中使用反射,反射出某类型的所有属性(Property)和对应的属性值.起初为了性能考虑在模块首次加载就反射类型的所有属性并将其存入字典.根据一般的编程规范——基于接口编程,所以首次传入 ...

  3. pipe----管道

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h&g ...

  4. qt的安装及连接sql使用注意

    qt安装与使用 今天写下qt使用的注意事项,qt-project.org上已经更新了qt5的相关库,但是建议不是很熟系qt的朋友,或者说想使用传统qt api而不是qml的朋友, 继续下载老版本4.8 ...

  5. listView 分页加载数据

    Android应用 开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过分页 的形式来展示数据,个人觉得这样会有 ...

  6. java反射的运用场景

    1.反射的好处是:可以在运行时确认对象以及方法. 2.下面举个简单的例子来说下反射的运用场景: 假如一款游戏有一个配置文件,配置文件里有个renderType设置了游戏启动时调用哪个RenderHan ...

  7. 结构-行为-样式-requireJs实现图片轮播插件

    最近工作需要,就自己写了一个图片轮播插件,不过想到要集成到框架中,于是又用RequireJs改了一遍. 主要文件: style.css jquery-1.11.1.min.js require.js ...

  8. 2017 01 16 校内小测 ZXR专场

    我等蒟蒻爆零之后,问LincHpin大爷:“此等神题可有甚么来头?” LincHpin:“此三题皆为当年ZXR前辈所留.” 固名之,ZXR专场,233~~~ T1 勤奋的YouSiki 这个题在BZO ...

  9. 个人PE流程备忘

    insmod memdisk     linux16 /boot/memdisk iso raw   initrd16 /iso/Win8PE.iso

  10. static const readonly

    C#中的static 和Java中的static 简单,两者用法完全是一致的.从两方面讨论: 1. 变量是属于类的,不是实例级别的.只能通过类名调用,不能通过实例调用. 2. 如果在定义时就赋值了,那 ...