摘要: 本文介绍主流浏览器的搜索引擎插件标准。本文还解释如何在浏览器的添加搜索引擎插件。
本文内容:
简介
现今主流的浏览器基本都支持在搜索栏上添加自定义的搜索引擎。当然,不同的浏览器采用的搜索引擎添加方式不同,下面就我所知道的4种方式逐一作一介绍。
三、 MozSearch标准
参见:http://developer.mozilla.org/en/docs/Supporting_search_suggestions_in_search_plugins
1. Supporting search suggestions in search plugins
MozSearch支持搜索提示,当用户在搜索栏中输入信息时,Firefox 2中搜索引擎插件会指定URL区获取实时的搜索提示。
一旦这个匹配的列表找到后,会在搜索栏下弹出栏中显示,可以让用户选择一个合适的查询术语。如果用户继续输入,新的提示请求搜索引擎,显示的列表重新刷新。
Yahoo和Google的搜索引擎包括Firefox 2 支持的查询提示。
2. Implementing suggestion support in the search plugin
为了支持查询提示,一个搜索引擎需要定义一个额外的<url>元素来和类型设置为"application/x-suggestions+json"一致。这就意味着支持提示的引擎插件有2个<url>元素,另外一个是主要的text/html类型的查询URL。
例如,Yahoo的搜索引擎有这样的<url>入口:
<Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}"/>
如果用户在查询栏中输入”fir”,然后暂停,Firefox将用”fir”代替{searchTerms}并查询这样的URL:
<Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command=fir"/>
查询结果用于构造提示列表
参见Creating MozSearch plugins获取更多关于如何执行一个搜索引擎。
3. Implementing search suggestion support on the server
处理搜索提示的主要工作实际上是在服务器上执行。如果你是一个网站设计者,并且想支持搜索提示,你需要为获取一个查询条件从JavaScript Object Notation(JSON)返回提示。
当浏览器想要获取可能对应的搜索术语,之后通过<url>元素发送一个Http GET请求给URL。
你的服务端取决于提供的建议,组成一个JSON包括至少2个至多4个元素。
4. Query String
在JSON中的第一元素是原始的查询字符串。这个允许Firefox来验证提示是否对应现在的查询术语。
5. Completion list
一个提示查询术语的数组。这个数组加上方括号。例如["term 1", "term 2", "term 3", "term 4"]
6. Descriptions
这个可选元素是一个完成列表中每个提示信息描述的数组。还有搜索引擎额外的信息能够返回在浏览器上显示,比如这个可用搜索结果的数量。
注意,Description不支持Firefox 2,任何指定会被忽略。
7. Query URLs
这个可选元素是一个在完成列表中为每个提示的一组交替的URLs。例如,如果你想提供一个地图链接来代替一个给定提示的查询结果页,你可以在这个数组中返回一个指向此地图的URL
如果你不指定查询的URL,默认的查询是使用基于查询描述,这个查询描述是在搜索插件的XML描述中的<url>元素。
注意,查询URLs不支持Firefox 2,并会被忽略。
比如,如果查询关键字为”fir”,你不需要返回描述或是查询的URLs,你可以返回下面的JSON:
["fir", ["firefox", "first choice", "mozilla firefox"]]
注意在这个例子中,只有查询字符串和完成的数据能够被指定,可选的元素不予考虑。
你的完整列表能包括你所喜欢的很多提示,虽然这些提示易于管理,但是当用户输入他们的查询字符串时能动态更新的显示。另外,你用于选择提示的方法是完全取决于你的。
8. Creating MozSearch plugins
1、Example: searching Yahoo!
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Yahoo</ShortName>
<Description>Yahoo Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,R0lGODlhEAAQAJECAP8AAAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0NogQuyBDEnEd2kHkfFWUamEzmpZSfmaIHPHrRguUm/fT+UwAAOw==</Image>
<Url type="application/x-suggestions+json" method="GET"
template="http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}" />
<Url type="text/html" method="GET" template="http://search.yahoo.com/search">
<Param name="p" value="{searchTerms}"/>
<Param name="ei" value="UTF-8"/>
<MozParam name="fr" condition="pref" pref="yahoo-fr" />
</Url>
<SearchForm>http://search.yahoo.com/</SearchForm>
</SearchPlugin>
如果使用这个Yahoo!Search搜索插件,输入”mozilla”到查询框中,则查询对应的URL如下:
http://search.yahoo.com/search?p=mozilla&ei=UTF-8&fr=moz2
输入的值对应为{searchTerms},直接跳转到URL为http://search.yahoo.com/search
2、Example: searching MDC
This plugin lets you easily search the Mozilla Developer Center web site.
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>MDC</ShortName>
<Description>
Mozilla
Developer
Center
search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%
2F
9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz%
2F
%2Fz8DJQAggJiQOe%2Ffv2fv
7Oz
8rays%2FN%2BVkfG%2FiYnJfyD%
2F
1%2BrVq7ffu3dPFpsBAAHEAHIBCJ
85c
8bN2Nj4vwsDw%
2F
8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi%2FG%2BQKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo%2BMXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia%2BCuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn
4Ha
3AHFsIDtgPq%2FvLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg%2FkdypqCg4H8lUIACnQ%2FSOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD%2BaDAXH0WLM
4A
9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg%3D%3D</Image>
<Url type="text/html" method="GET" template="http://developer.mozilla.org/en/docs/Special:Search?search={searchTerms}"/>
<SearchForm>http://developer.mozilla.org/en/docs/Special:Search</SearchForm>
</SearchPlugin>
注意,在这个例子中没有使用<Param>来定义参数,参数直接简单的包含在模版URL中,实际上在使用GET方法时首选。<Param>应该用于POST方法。
图12 使用MozSearch查询时的提示