Search Provider sind die Möglichkeit über das GUI des Internet Explorers auf einfache Weise auf bestimmten Search Seiten/Engines zu suchen:

Search Provider icon
Search provider am Beispiel http://www.bing.com/

Nun, wie funktioniert das eigentlich?

Ein Search provider kann über ein XML File definiert werden, z.B. der Provider der GPS:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
     <ShortName>GPS</ShortName>
     <Description>Group Policy Search provider</Description>
     <InputEncoding>UTF-8</InputEncoding>
     <Image height="16" width="16" type="image/icon">http://gps.cloudapp.net/favicon.ico</Image>
     <Url type="text/html" template="http://gps.cloudapp.net/default.aspx?search={searchTerms}"/>
     <Url type="application/x-suggestions+xml" template="http://gps.cloudapp.net/searchsuggestions.aspx?q={searchTerms}&language={Language}"/>
</OpenSearchDescription>
  1. D.h. es wird als erstes ein Name für den Eintrag in der Liste generiert:
    <ShortName>GPS</ShortName>

    Internet Explorer Search Provider
    Shortname in the GUI

  2. Es wird eine Beschreibung zu dem Provider definiert:
    <Description>Group Policy Search provider</Description>
  3. Sinnvoll ist es auch ein Encoding vorzugeben, unsere Empfehlung ist, sofern der Datenlieferant UTF-8 fähig ist, auch UTF-8 zu verwenden:
    <InputEncoding>UTF-8</InputEncoding>
  4. Zur besseren Wiedererkennung und „branding“ kann ein Icon definiert werden:
    <Image height="16" width="16" type="image/icon">http://gps.cloudapp.net/favicon.ico</Image>
    (Bild: siehe oben, das Icon links neben den Einträgen)
  5. Nun wird es spannend, als nächstes wird die tatsächliche Suchseite angegeben:
    <Url type="text/html" template="http://gps.cloudapp.net/default.aspx?search={searchTerms}"/>
    Anzumerken ist hier der Platzhalter {searchTerms}. Dieser wird automatisch bei der Suche durch die eingegebenen Suchbegriffe ersetzt. D.b. auch, dass die Suchseite einen entsprechenden Parameter aufnehmen kann. Der Name des Parameters ist natürlich frei implementierbar, im Beispiel der GPS ist dies „search“.
  6. [Optional]Sofern es gewünscht ist, kann auch eine Vorschau aktiviert werden:
    <Url type="application/x-suggestions+xml" template="http://gps.cloudapp.net/searchsuggestions.aspx?q={searchTerms}&language={Language}"/>
    Der Zugriff auf die “Vorschau/Suggestion” unterscheidet sich nur wenig von der eigentlichen Referenz auf die Suchseite. Im Beispiel ist noch {language} konfiguriert, hier wird der Language Code eingefügt, also z.B. „de-DE“. Auch hier muss natürlich die aufnehmende Seite (hier searchsuggestions.aspx) die entsprechenden Parameter aufnehmen können und „verstehen“.
    Die Suggestion Seite muss als Resultat XML Content zurückliefern, z.B.: <?xml version="1.0" encoding="ISO-8859-1" ?>
    <SearchSuggestion version="2.0" xmlns="http://schemas.microsoft.com/Search/2008/suggestions">
        <Query>test</Query>
        <Section>
            <Item>
                <Text>SSLCipherSuiteOrder</Text>
                <Url>http://gps.cloudapp.net/default.aspx?policyid=58</Url>
                <Description>Determines the cipher suites used by the Secure So...</Description>
            </Item>
        </section>
    </SearchSuggestion>
    Wichtig hier vor allem der “Section” Bereich, in dem jedes gefundene Item zurückgeliefert wird, wobei “Text” die Überschrift definiert, “URL“ der Link bei einem Klick auf die Suggestion ist und “Description” die etwas ausführlichere Beschreibung darstellt.

Wenn man also eine entsprechend vorbereitete Such-Seite zur Verfügung hat oder sogar selbst erstellt hat, kann man über das o.g. XML File die Daten in den Browser integrieren, am einfachsten über die Javascript Methode window.external.AddSearchProvider("searchprovider.xml")
Wobei der übergebene Parameter die relative oder absolute URL auf das XML File ist.
Nachdem also das XML File aufgerufen wurde, werden die Informationen in die Registry eingetragen:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{GUID}]
"DisplayName"="GPS"
"URL"="http://gps.cloudapp.net/default.aspx?search={searchTerms}"
"ShowSearchSuggestions"=dword:00000001
"SuggestionsURL"="http://gps.cloudapp.net/gps/searchsuggestions.aspx?q={searchTerms}&language={Language}"
"Codepage"=dword:0000fde9
"OSDFileURL"="http://gps.cloudapp.net/searchprovider.xml"
"FaviconURL"="http://gps.cloudapp.net/favicon.ico"
"FaviconPath"="%userprofile%\\AppData\\LocalLow\\Microsoft\\Internet Explorer\\Services\\search_{GUID}.ico"

Allerdings raten wir davon ab, Search Provider manuell in die Registry einzutragen!

In Corporate Environments ist das Verbreiten der SearchProvider leider nicht ganz einfach, denn hierfür muss ein ADM bzw. ADMX File erstellt werden, welches genau diese Registry Settings vornimmt, beschrieben unter: How to create custom .adm or .admx files to add search providers to the toolbar search box in Internet Explorer 7.

Links:

Integrieren von Suchfunktionen in Ihre Website mit ASP.NET
Erweiterbarkeit der Suchanbieter in Internet Explorer