silverlight:Silverlight专题(13) - 基于Silverlight的Live Search资讯搜索

  本文举例源代码或素材下载

  前言:  最近几天微软Live Search公布了重新架构了Live Search API(版本为2.0 Beta)

  该API律属于微软最新Live Search Service项目 – Silk Road(丝绸的路)

  那么如何在Silverlight中Live Search Service呢来进行网页图片资讯等搜索呢?

  本篇将带大家走进Silverlight+Live News Search美妙世界

  再阅读本篇文章的前请先阅读上篇文章:Silverlight专题(12) - 基于SilverlightLive Search网页搜索

  解决方案:  UI层和Silverlight专题(12) - 基于SilverlightLive Search网页搜索几乎没有任何差异

  所以直接列出修改部分代码如下

  Code

1<ListBox x:Name="NewsPanelCtl" Grid.Row="2" Grid.ColumnSpan="2" Margin="2,0" BorderThickness="0" Background="#3c3c3c" Height="500" Visibility="Collapsed">
2   <ListBox.ItemTemplate>
3     <DataTemplate>
4       <StackPanel Width="480">
5         <HyperlinkButton Content="{Binding Title}" NavigateUri="{Binding OriginalUrl}" TargetName="_blank"/>
6         <TextBlock Margin="0,2" TextWrapping="Wrap" Text="{Binding Snippet}"/>
7         <StackPanel Orientation="Horizontal">
8           <TextBlock Text="{Binding Source}" FontSize="10" Foreground="Green"/>
9           <Ellipse Fill="Green" Width="3" Height="3" Margin="2"/>
10           <TextBlock Text="{Binding PublishDate}" FontSize="10"/> 
11         </StackPanel>
12       </StackPanel>
13     </DataTemplate>
14   </ListBox.ItemTemplate>
15</ListBox>


  底层代码如下:

  Code

1privatevoid SearchBtnCtl_Click(object sender, RoutedEventArgs e)
2{
3   this.SearchBtnCtl.IsEnabled =false;
4   LiveSearchPortTypeClient liveSearchClient = LiveSearchPortTypeClient;
5   SearchRequest webRequest = SearchRequest;
6   webRequest.AppId ="44980C5CFA65792B3CDFF33A5CBF2CFAD17E3349";
7   webRequest.Market ="zh-CN";
8   webRequest.Version ="2.0";
9   webRequest.Sources = SourceType { SourceType.News};
10   webRequest.Query =this.KeywordsCtl.Text.Trim;
11   webRequest.Options = SearchOption { SearchOption.EnableHighlighting };
12 
13   liveSearchClient.SearchAsync(webRequest);
14   liveSearchClient.SearchCompleted EventHandler<SearchCompletedEventArgs>(liveSearchClient_SearchCompleted);
15}
16 
17void liveSearchClient_SearchCompleted(object sender, SearchCompletedEventArgs e)
18{
19   SearchResponse liveSearchResponse = e.Result;
20 
21   //News Search
22   NewsResponse sResponse = liveSearchResponse.News;
23   this.WebNumCtl.Text = String.Format("共{0}条搜索结果", sResponse.Total);
24   List<NewsInfo> m_sList = List<NewsInfo>;
25   (sResponse.Results.Length >0)
26   {
27     foreach(NewsResult sResult in sResponse.Results)
28     {
29       NewsInfo sInfo = NewsInfo;
30       sInfo.Title = sResult.Title;
31       sInfo.Source = sResult.Source;
32       sInfo.Snippet = sResult.Snippet;
33       sInfo.PublishDate = sResult.Date;
34       sInfo.OriginalUrl = sResult.Url;
35       m_sList.Add(sInfo);
36     }
37 
38     this.NewsPanelCtl.ItemsSource= m_sList;
39   }
40 
41   this.NewsPanelCtl.Visibility = Visibility.Visible;
42   this.SearchBtnCtl.IsEnabled =true;
43}


  其中还可在12行添加如下代码:

webRequest.News = NewsRequest;
webRequest.News.Category = "rt_Business";
webRequest.News.SortBy = NewsSortOption.Date;
webRequest.News.SortBySpecied = true;


  其中Category用来限制搜索新闻类别

  目前含有类别有

  rt_Business(商业新闻)

  rt_Entertainment(娱乐新闻)

  rt_Health(健康新闻)

  rt_Political(政治新闻)

  rt_Scientic(科学新闻)

  rt_Sports(体育新闻)

  rt_US(美国国内新闻)

  rt_World(世界新闻)

  rt_Local(本地新闻)

  rt_ScienceAndTechnology(科技新闻)   而SortBy用来设置发送到客户端新闻以什么样排序来发送(默认情况下是以最相关排序发送)

Silverlight专题(13) - 基于Silverlight<img src='/icons/78875de.gif' />Live Search资讯搜索

  其外还有LocationOverride属性用来做新闻位置过滤不过目前只有美国地址才可用

  而Off个非常有用属性你可以依靠这个属性实现Live Search分页浏览

  (顾名思义Off就是用来表示目前想要获得新闻位置和条新闻位置的间差距

  比如你点击第 2页时事实上Live Search将Off设置成了10就可以得到第11~20条新闻了)

  NewsInfo类定义如下:

  Code

1public NewsInfo
2{
3   public Title { get; ; }
4   public Snippet { get; ; }
5   public PublishDate { get; ; }
6   public Source { get; ; }
7   public OriginalUrl { get; ; }
8}




  结果展示:  展示如下(部署在了http://Streaming.live.com)

  和Live Search搜索结果比较:

Silverlight专题(13) - 基于Silverlight<img src='/icons/78875de.gif' />Live Search资讯搜索 Silverlight专题(13) - 基于Silverlight<img src='/icons/78875de.gif' />Live Search资讯搜索

  文章来源: http://www.cnblogs.com/ibillguo/archive



Tags:  silverlight2 silverlight.2.0 silverlight是什么 silverlight

延伸阅读

最新评论

发表评论