Našeptávač pro vyhledávací pole v IE8

27. května 2009

Internet Explorer 8 k řadě nových funkcí rozšiřuje i některé funkce původní. Podporu vlastních vyhledávačů známou již od IE7 rozšiřuje o "našeptávač", tedy zobrazení vlastních návrhů vyhledávání. Jak na vlastní našeptávač si ukážeme v článku.

Poskytovatel návrhů vyhledávání

Jde o zobrazení předem vyhledaných výsledků na výraz, který uživatel zadává do vyhledávacího políčka prohlížeče, někdy se tato funkce nazývá též našeptávač – uživatel tak může rychleji dojít k cíli nebo naopak lépe upřesnit svůj dotaz. Rozšířená funkcionalita v IE8 dává tvůrcům webových stránek možnost dopravit vlastní tipy vyhledávání až do vyhledávacího políčka prohlížeče – prohlédněte si obrázek.

Ukázka vlastních návrhů vyhledávání

Vlastní návrhy vyhledávání rozšiřují standard pro komunikaci vyhledávačů, díky kterému je možné do prohlížeče přidávat vlastní vyhledávače. Jakmile uživatel píše do vyhledávacího políčka, Internet Explorer 8 může odesílat zadávaný výraz vyhledávací službě a její odpověď zobrazit jako vyhledané tipy.

Formát výsledků našeptávače

Předávat výsledky našeptávači v IE8 je kupodivu možné ve dvou formátech – JSON a XML. Výsledky mohou obsahovat jen tipy na výrazy k vyhledání, ale mohou obsahovat i přímo URL, tedy odkazy. Ke každému výrazu můžeme přidat i stručný popis. Formát XML navíc umožňuje i seskupit výrazy do sekcí – každá sekce je zobrazena odděleně a může mít i vlastní nadpis. Prohlížeč najednou zobrazí maximálně 10 položek (návrhů nebo nadpisů sekcí), zobrazuje je v pořadí, v jakém je vrátila vyhledávací služba.

Příklad ve formátu JSON

["sql",
  ["Databáze a jazyk SQL", "SQL – skládání dotazů", "SQL – pokročilé dotazy"],
  ["Pojem databáze dnes není zcela jistě…", "Dnešní díl budu věnovat různým typům…", "V dnešním desátém článku o SQL si…"],
  ["http://interval.cz/clanky/databaze-a-jazyk-sql/","http://interval.cz/clanky/sql-skladani-dotazu/", "http://interval.cz/clanky/sql-pokrocile-dotazy/"] ]

Příklad ve formátu XML

<?xml version="1.0"?>
<SearchSuggestion xmlns="http://schemas.microsoft.com/Search/2008/suggestions">
  <Query>sql</Query>
  <Section>
     <Item>
       <Text>Databáze a jazyk SQL</Text>
       <Description>Pojem databáze dnes není zcela jistě…</Description>
       <Url>http://interval.cz/clanky/databaze-a-jazyk-sql/</Url>
     </Item>
     <Item>
       <Text>SQL – skládání dotazů</Text>
       <Description>Dnešní díl budu věnovat různým typům…</Description>
       <Url>http://interval.cz/clanky/sql-skladani-dotazu/</Url>
     </Item>
     <Item>
       <Text>SQL – pokročilé dotazy</Text>
       <Description>V dnešním desátém článku o SQL si…</Description>
       <Url>http://interval.cz/clanky/sql-pokrocile-dotazy/</Url>
     </Item>
  </Section>
</SearchSuggestion>

Ve výsledcích dle specifikace formátu XML Search Suggestions mohou být navíc kromě oddělovačů sekcí (element Separator) také obrázky (element Image).

Zveřejnění poskytovatele návrhů vyhledávání

Pro zveřejnění našeptávače se nám bude hodit předchozí článek o tlačítcích vlastních akcelerátorů a vyhledávačů v IE8 a IE7. Rozšíříme soubor popisující vyhledávač o odkaz Url na typ application/x-suggestions+xml, což je nový typ určený pro našeptávače. Užitečný je i odkaz na ikonku vyhledávače Image.

Pro ukázku jsem vytvořil Interval.Cz.OpenSearchDiscover.xml, který si snadno upravíte pro svou potřebu:

<?xml version="1.0" encoding="UTF-8" ?>
  <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Interval.cz</ShortName>
  <Description>Interval.cz</Description>
  <InputEncoding>UTF-8</InputEncoding>
  <Url type="text/html" template="http://www.google.cz/custom?domains=interval.cz&amp;sitesearch=interval.cz&amp;hl=cs&amp;q={searchTerms}" />
  <Url type="application/x-suggestions+xml" template="http://interval.cz/Interval.Cz.SuggestionService.svc/Search?q={searchTerms}"/>
  <Image height="16" width="16" type="image/ico">http://interval.cz/favicon.ico</Image>
</OpenSearchDescription>

Jakmile je vyhledávač s našeptávačem zveřejněn ve stránce, při přidání vyhledávače je již nabídnuta možnost využít návrhy vyhledávání:

Přidání poskytovatele vyhledávání s našeptávačem

Vytvoření poskytovatele návrhů vyhledávání

Nejprve si zvolíme formát poskytovatele – JSON nebo XML (viz výše).  Pokud již neprovozujeme nějaké webové služby, které používají JSON, spíše bych volil formát XML.

Vytvoření XML výstupu je velmi podobné tvorbě RSS kanálu, jen je potřeba zajistit, aby poskytovatel při generování výsledku bral v potaz parametr, který jsme uvedli v definičním souboru poskytovatele vyhledávání – v našem příkladě je to q. Tímto parametrem prohlížeč předává hledaný výraz, jak je uživatel zapsal do vyhledávacího políčka. Pro něj musí náš "našeptávač" najít tipy.

Počet vrácených tipů je potřeba omezit na maximálně 10 – prohlížeč jich stejně více nezobrazí, a tak bychom jinak zbytečně zatěžovali naše zdroje i přenosovou trasu.

Našeptávač by také měl vracet správný Content-type – tedy application/x-suggestions+xml.

Pokud používáte technologie na bázi .net (ASP.NET), pak vedle vhodného řešení pomocí Http handleru se určitě hodí i vytvoření služby pomocí Windows Communication Foundation (WCF) architektury REST. Řešení pomocí ASP.NET stránky je vhodné méně – sice takovou stránku rychle "naklikáme", ale zbytečně se okrádáme o výkon vyplýtvaný na nepotřebné funkcionality stránky. Užitečné může být i kešování v .NET.

Nezávisle na použité technologie je důležité zajistit správné chování poskytovatele i v případě, že na daný výraz není k dispozici žádný návrh tj. nic nebylo nalezeno. Vrácený výsledek musí obsahovat zopakovaný výraz bez elementů návrhů. Nedodržíme-li toto chování, v prohlížeči se místo korektního hlášení "Žádné návrhy" objeví hlášení "Došlo k chybě".

XML výstup bez výsledků:

<?xml version="1.0"?>
<SearchSuggestion xmlns="http://schemas.microsoft.com/Search/2008/suggestions">
  <Query>hledaný text</Query>
</SearchSuggestion>

JSON výstup bez výsledků:

["hledaný text"]

K hlášení chyby nebo k nesprávné funkci dojde také v případě, že se liší výraz, který byl zadán uživatelem do prohlížeče a výraz vracený našeptávačem – prohlížeč si totiž výsledky kešuje a musí mít jistotu, že pro daný výraz obdržel korektní odpověď. Pozor proto při ladění – může se stát, že si mezipaměť prohlížeče zahltíte nekorektními výsledky našeptávače a do vyprázdnění mezipaměti bude prohlížeč tvrdit, že došlo k chybě.

Stažení ukázky definice vyhledávače s našeptávačem.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *