一、 功能说明

 根据关键字在指定的站点内搜索相关页面。在电子商务网站中站内搜索功能尤为重要,实现站内搜索功能可以提供更好的用户体验,可以让网站浏览者在我们的网站上停留更长的时间,如果用户不能很快的找到所需要的商品,那么他很有可能转到其他网站,所以对于我们这样的零售类电子商务网站来说,站内搜索对我们的业务起着非常重要的作用。

二、 参考资料

 www.codeproject.com
 MSN Search Web Service SDK Help

三、 实现方式

 利用MSN Search Engine可以很方便的实现站内搜索功能。根据所参考的资料,现有两种方式可以实现,以下分别讲述:

1、 经查阅相关资料和MSN Serach官方网站的说明,MSN Search提供了以RSS Feed方式订阅搜索结果的能力,通过观察浏览器地址栏中的参数可以确定每个参数的功能,以下针对站内搜索功能举例说明:
http://search.msn.com/results.aspx?q=site%3awww.abspc.com+AMD&format=rss& count=100&first=1
 这里q=site%3awww.abspc.com+AMD是指要搜索的站点为www.abspc.com,搜索的关键字为AMD,如果要查询多个关键字,那么关键字之间用 + 连接。
 format=rss是指定搜索的结果以RSS方式返回,RSS文档是标准的XML文档。
 count=100时指最多显示100个搜索结果。
 First=1表示从第一个结果开始显示
 因为RSS文档是标准的XML文档格式,那么利用这个特点就能很方便的实现对我们的站点搜索的功能,从上面的链接加载XML文档,利用XSLT格式化返回的XML文档并输出到浏览器显示。附搜索结果XML文档格式:





 http://search.msn.com:80/results.aspx?q=site%3awww.abspc.com+AMD
 Search results
 Copyright © 2005 Microsoft. All rights reserved. These XML results may not be used, reproduced or transmitted in any manner or for any purpose other than rendering MSN Search results within an RSS aggregator for your personal, non-commercial use. Any other use of these results requires express written permission from Microsoft Corporation. By accessing this web page or using these results in any manner whatsoever, you agree to be bound by the foregoing restrictions.


 http://www.abspc.com/promo/index.asp
 ... Purchase the processor that takes gaming to the limits. Buy any AMD Athlon™ 64 or AMD Athlon 64 FX processor-based system and get a FREE copy of Half-Life® 2 Bronze offer via Steam™, including ...
 08 Sep 05 00:05:00 PST




 http://www.abspc.com/app/config.asp?mono=1709
 ... Get a Coupon for 4 Months of Napster and 12 Downloads Free from AMD & Napster Operating System More Info Microsoft Windows XP Home with Service Pack 2 (For System Bundle Use ONLY!) - OEM ...
 14 Sep 05 05:34:00 PST



2、 MSN Search提供了一个可以供免费使用的搜索引擎,通过Web服务可以访问这个接口并实现更强的搜索能力。以下是实现步骤的简单描述:

 第一步:要利用MSN Search Web Service的搜索能力,首先必须注册你的应用程序,生成一个唯一的应用程序代码,这可以通过访问站点:http://search.msn.com/developer得到。
 第二步:在Visual Studio .Net 2003中添加Web引用: http://soap.search.msn.com/webservices.asmx?wsdl,会自动生成一个WebService代理类MSNSearch。
 第三步:实例化对象MSNSearch、SearchRequest,在SearchRequest对象中设置AppID属性为在第一步所得到的应用程序代码,在Query属性中设置搜索关键字,这里是实现站内搜索的关键!在关键字前面加上site:www.abspc.com就是对www.abspc.com站点内进行搜索,关键字之间用空格分隔。如果要对多个网站进行搜索,可以在关键字前加上(site:www.abspc.com OR site:www.newegg.com)这样的参数。例如在www.abspc.com站点内搜索MP3和Video关键字,Query参数则设置为:”site:www.abspc.com MP3 Video”,
相关属性设置完成后执行MSNSearch对象的Search(SearchRequest searchRequest)方法返回SearchResponse对象,在SearchResponse对象中的SourceResponse对象中可以取得搜索结果对象Result的数组,Result对象有Title、Description、Url、DisplayUrl、CacheUrl、SearchTags等属性,遍历Result对象数组并格式化Result的属性后在浏览器输出就得到了搜索结果页面。(其他对象的属性请参考MSN Search Web Service SDK)

四、 对两种实现方式的比较

 通过简单的测试,两种方式都能很方便的得到搜索结果。
 第一种实现方式通过获取URL返回的XML文档并使用XSLT格式化实现,比较适用于在ASP站点使用,因为在ASP中访问Webservice必须通过COM组件,并且COM需要调用Win32 API函数来访问Internet,所以实现起来比较麻烦,通过URL方式则不存在这样的问题。
 第二种方式适合在ASP.NET中使用,在.NET中可以很方便的调用Webservice,同时,通过对SourceRequest对象的访问,我们可以根据需要取得我们所需要的搜索结果字段,并设置搜索结果与搜索关键字的相关性等级,可以更灵活的控制搜索引擎。
posted on 2007-01-12 07:45  Jin  阅读(2123)  评论(4编辑  收藏  举报