技术开发 频道

在windows mobile上必硬(bing)

 摘要:前一阵子,bing一直是很火的话题, 其市场占有率最高日一度超过18%,不仅因为微软强大的宣传攻势,也有"AV门"("必硬"的由来???)等因素的影响. 尽管对其搜索质量褒贬不一, bing提供的门类越发丰富的bing API还是值得期待的。如果你对bing API还没有概念,建议先阅读马宁童鞋的此文。本文将演示如何在移动设备使用bing API 2.x打造一个简易的新闻搜索。

 一. bing的移动版本

 bing的移动版本已经上线。 你可以在手机浏览器地址栏输入m.bing.com访问其web版本:

 你也可以下载bing for windows mobile客户端,通过http://mobile.search.live.com/client/download_manual.aspx

 其效果如下图所示:

 不过目前大多数服务只在美国,英国,日本等处开放,中文版本的还需等待。

 二. 在Windows Mobile 应用中使用bing API

 在一切开始之前,首先你得去申请一个AppID(http://www.bing.com/developers/createapp.aspx),并妥善保存。bing目前已经提供了众多门类的API服务(SourceTypes),包括网页,广告,图片,视频,新闻,电话薄,翻译,拼写检查等等。每一个门类都是一个相对独立的垂直搜索。你可以在应用程序中利用这些SourceTypes中的一个或者一些来构造一个自定义的搜索相关应用。

 这里我希望编写一个简单的新闻搜索,其基本功能如下:

 1.每次返回查询的前10条记录

 2.给出相关搜索

 3.可以查看搜索结果的发布时间和新闻选段等信息。

 其界面主要由一个搜索框(tbSearchString),一个用来显示相关查询的ComboBox(cbRelated),一个用来显示结果的ListView(lvResult)和两个Softkey Button组成,如图所示:

 ok, 接下来我们先添加一个对bing Web Service的引用, 服务URL为:http://api.search.live.net/search.wsdl

 在Search按钮按下时,执行以下代码:

 //清理listview和combBox

 listView1.Items.Clear();

 listView1.Tag = null;

 cbRelated.Items.Clear();

 using (LiveSearchService service = new LiveSearchService())

 {

 //BuildRequest用来配置我们的查询请求.别急,马上会提到

 SearchRequest request = BuildRequest();

 SearchResponse response = service.Search(request);

 //DisplayResponse用来组织显示查询结果

 DisplayResponse(response);

 }

 BuildRequest定义如下:

 private SearchRequest BuildRequest()

 {

 SearchRequest searchReq = new SearchRequest();

 //注意这里AppId请自行修改

 searchReq.AppId = Properties.Resources.AppId;

 searchReq.Query = tbSearchString.Text;

 //sourcetype 决定了本次查询的类型

 searchReq.Sources = new SourceType[] { SourceType.News, SourceType.RelatedSearch };

 searchReq.Market = "en-US";

 //配置新闻的数目,排序方式等

 searchReq.News = new NewsRequest();

 searchReq.News.Count = 10;

 searchReq.News.CountSpecified = true;

 searchReq.News.SortBy = NewsSortOption.Relevance;

 searchReq.News.SortBySpecified = true;

 return searchReq;

 }

0
相关文章