Článek vyšel na serveru Root.cz.
Formát pro popis vyhledávání OpenSearch lze již delší dobu používat pro agregaci vyhledávání na několika serverech, především na mateřském A9.com, který tento formát navrhnul. Nově ho podporují i prohlížeče Firefox 2 a Internet Explorer 7, ve kterých lze tento formát použít pro přidání serveru do vyhledávacího pole přímo v prohlížeči. Pojďme se tedy na tento formát blíže podívat.
Popis vyhledávání je tvořen jednoduchým XML dokumentem v MIME typu application/opensearchdescription+xml
s následující strukturou:
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> <ShortName>PHP triky</ShortName> <Description>Vyhledává frázi, % nahrazuje libovolný počet znaků</Description> <Url template="https://php.vrana.cz/atom.php?search={searchTerms}" type="application/atom+xml"/> <Url template="https://php.vrana.cz/hledat.php?search={searchTerms}" type="text/html"/> <Contact>vrana@php.net</Contact> <Tags>php weblog</Tags> <Image type="image/gif" width="150" height="100">https://php.vrana.cz/logo.gif</Image> <Image type="image/x-icon" width="16" height="16">https://php.vrana.cz/favicon.ico</Image> <Developer>Jakub Vrána</Developer> <Language>cs</Language> </OpenSearchDescription>
Jednotlivé značky mají tento význam:
text/html
nebo application/atom+xml
) a nepovinnými indexOffset (číslo prvního výsledku vyhledávání, výchozí je 1) a pageOffset (číslo první stránky s výsledky vyhledávání, výchozí je 1)role="example"
se používá pro příklad vyhledávání, vyhledávaný řetězec se uvádí do atributu searchTerms, obsah značky je prázdnýimage/x-icon
nebo image/png
), width a height (ikona s rozměry 16×16 se používá ve vyhledávacích polích prohlížečů, obrázek s rozměry 64×64 v agregátorech vyhledávání)open
(výchozí), limited
(výsledky vyhledávání se nesmí předávat dalším klientům), private
(výsledky vyhledávání se nesmí zobrazovat uživatelům) nebo closed
(klient nesmí toto vyhledávání používat)false
, FALSE
, 0
, no
nebo NO
vyjadřují nepřítomnost obsahu pouze pro dospělé (výchozí hodnota), jakákoliv jiná hodnota jeho přítomnostcs
), který toto vyhledávání podporuje (pokud vyhledávání podporuje více jazyků, uvede se tato značka víckrát), výchozí hodnota je *
(vyhledávat lze v jakémkoliv jazyce)UTF-8
, značek může být uvedeno víceUTF-8
, značek může být uvedeno víceMaska pro vyhledávání se zadává do atributu Url template a ve své nejjednodušší podobě má tvar http://example.com/search?q={searchTerms}
. Ve složených závorkách mohou být uvedeny tyto parametry:
*
Za parametry, které nejsou v našem vyhledávání povinné, lze přidat ?
, což způsobí, že se v případě jejich neznámé hodnoty použije prázdný řetězec.
Stránka s výsledky vyhledávání odpovídá MIME typu určenému atributem Url type, může však být doplněna o tyto značky ze jmenného prostoru http://a9.com/-/spec/opensearch/1.1/
:
role="request"
se používá pro uvedení dotazu, kterému výsledek vyhledávání odpovídáV HTML dokumentech se místo samostatných značek používá značka <meta>
ve formátu <meta name="startIndex" content"1">
. Značka Query se v HTML dokumentech neuvádí.
Výchozí hodnoty jednotlivých značek zajišťují, že pokud prezentujeme všechny výsledky vyhledávání na jedné stránce, tak žádnou značku uvádět nemusíme.
O tom, že náš server podporuje vyhledávání ve formátu OpenSearch, můžeme dát prohlížeči a dalším službám vědět podobně jako o syndikačních formátech RSS a Atom. Dělá se to přidáním značky <link rel="search" type="application/opensearchdescription+xml" href="cesta k OpenSearch dokumentu" title="název vyhledávací služby">
do části <head>
HTML dokumentu. Stejnou značku lze přidat i do syndikačního formátu Atom a při uvedení jmenného prostoru http://www.w3.org/2005/Atom
i do RSS.
Tímto způsobem se o vyhledávání mohou automaticky dozvědět služby, které tento formát podporují a v závislosti na hodnotě značky SyndicationRight ho rovnou začít využívat. O existenci dokumentu OpenSearch můžeme dát vědět i explicitně, např. na mateřském A9.com je formulář pro přidání nového zdroje na adrese http://opensearch.a9.com/newColumn.jsp. Validátor na tomto serveru kontroluje ve výsledcích vyhledávání přítomnost značek totalResults, startIndex a itemsPerPage, které jsou ale podle specifikace nepovinné.
Formát OpenSearch je dále rozšiřitelný, v současné době jsou k dispozici 4 rozšíření: Referrer (umožňuje určit původ vyhledávání), Relevance (umožňuje určit relevanci výsledků), Parameter (umožňuje vyhledávat i pomocí jiných metod než GET a určit kódování přenášených dat, může se tedy hodit např. pro vyhledávání obrázků podobných zadanému) a Suggestions (umožňuje implementovat našeptávač).
Pokud uživatel prohlížeče Internet Explorer 7 zavítá na server podporující OpenSearch, tak prohlížeč tento server automaticky přidá do vyhledávacího pole. Uživatel potom server může uložit trvale. Prohlížeč podporuje i rozšíření Referrer (posílá IE-Address
pro vyhledávání z adresního řádku nebo IE-SearchBox
pro hledání z vyhledávacího políčka). Internet Explorer 7 podporuje výsledky v HTML i v syndikačních formátech.
V prohlížeči Firefox 2 integrace tak těsná není, uživatel o přítomnosti vyhledávání OpenSearch není nijak informován a musí ho se server ve vyhledávacím poli rovněž zobrazí, kromě toho lze server stejně jako v Internet Exploreru 7 také přidat explicitně pomocí JavaScriptového kódu window.external.AddSearchProvider('cesta k OpenSearch dokumentu')
. Tento kód bude nejspíš nabízen ve formě běžného odkazu na stránce. Firefox 2 pracuje pouze s výsledky vyhledávání ve formátu HTML, syndikační formáty využít nedokáže. Prohlížeč podporuje i rozšíření Suggestions.
Prohlížeč Opera 9 formát OpenSearch zatím nepodporuje.
Formát OpenSearch je implementačně velice jednoduchý (pro jednoduchou integraci do rozšířených systémů jsou navíc k dispozici knihovny) a uživatelům moderních prohlížečů může vyhledávání podstatně zpříjemnit, takže jeho nasazení není důvod odkládat.
Diskuse je zrušena z důvodu spamu.