分类:
2008-04-14 15:54:50
一、 引言
Web世界中一项广为使用的功能就是搜索。随着Web技术的日益发展,为了更好地满足客户的需求,常规搜索引擎开始对更多的非常规方式"敞开了大门"。在这方面,Yahoo!率先提供出其Y!Q服务。这个新的服务能够使你搜索任何web页面,前提是该页面的作者必须包括在他们的web页面中。是服务实现了把相关的搜索结果呈现到读者眼前,从而向读者展示更多的信息而不必离开他们的当前页面。
Yahoo!的Y!Q服务的确是一个伟大的想法,但是它的出现也受到了一些批评。原因何在?首先,它要求客户端必须使用Yahoo!的 Javascript并且你必须添加一个<form/>元素,以便满足Yahoo!的搜索要求。对于许多网站作者来说,提供该服务要求付出太多的努力。并且,在所有这些条件满足之后,搜索结果将以Yahoo!风格展现,从而破坏了用户网站的外观感觉。
幸运的是,Yahoo!并非唯一的提供"从你的网站提供搜索结果"服务的搜索引擎。MSN Search也提供一种类似服务,除了它能够使web开发者控制外观感觉以外。这种能力来自于MSN Search提供它的搜索结果的版本,从而使得订阅一个特定的搜索或使用方法把该结果添加到你的页面成为可能。
尽管Google已经率先实现了这种新的"从你的站点进行搜索"技术;但是,在本文成文之时,与Google相关的Google BlogSearch Beta也已经能够以RSS或者Atom格式提供返回的结果。
二、 服务器端组件
使用MSN Search执行搜索时,你会看到一个桔黄色的XML图像出现在结果页面的底部。点击这个图像将会把你带到一个新的页面,并提供给你订阅该搜索的URL。
这样以来,你就可以编写服务器端代码以检索远程馈送。对于本文中的搜索窗,你将使用检索搜索馈送。来自于服务器应用程序请求信息的URL看起来如下所示:
websearch.php?search=[SEARCHTERM] |
<?php header("Content-Type: text/xml"); header("Cache-Control: no-cache");if ( isset($_GET["search"]) ) { $searchTerm = urlencode( stripslashes($_GET["search"]) ); $url = ""; $xml = file_get_contents($url); echo $xml; } ?> |
var msnWebSearch ={}; |
<a href="#" onclick='msnWebSearch.search(event,"Professional Ajax"); return false;'> Professional Ajax </a> |
<divclass="ajaxWebSearchBox"> <div class="ajaxWebSearchHeading">MSN Search Results <a class="ajaxWebSearchCloseLink" href="#">X</a> </div> <div class="ajaxWebSearchResults"> <a class="ajaxWebSearchLink" target="_new" /> <a class="ajaxWebSearchLink" target="_new" /> </div> </div> |