» direct naar zoek en menu

Tijdschrift voor webwerkers » Artikel #136

OpenSearch - Sites doorzoekbaar maken met het zoekvak

Het zoekvak of de zoekbalk, rechtsboven naast de adresbalk, is inmiddels een standaard onderdeel van de meeste browsers geworden. Via dit zoekvak zijn de favoriete zoekmachines binnen handbereik.

Een zoekopdracht kan op eenvoudige wijze bij meerdere zoekmachines worden uitgeprobeerd zonder dat je eerst naar de desbetreffende websites hoeft te gaan en daar iedere keer opnieuw de zoekopdracht in hoeft te typen.

Hoe een browser een zoekmachine moet aanroepen staat beschreven in een zoekmachinebeschrijving. In deze beschrijvingsbestandjes staat naast de aanroep van een zoekmachine nog een aantal andere eigenschappen van een bepaalde zoekmachine gedefinieerd, zoals welk icoontje er in het zoekvak moet worden getoond en bijvoorbeeld of er trefwoordsuggesties beschikbaar zijn voor deze zoekmachine. Doordat deze bestandjes vrij makkelijk kunnen worden uitgewisseld, en website-eigenaren deze bestandjes aan gebruikers aan kunnen bieden, kan het zoekvak in de browser worden uitgebreid met extra zoekmachines.

Met de komst van Firefox 2.0 en Internet Explorer 7.0 is OpenSearch de standaard geworden voor het uitwisselen van zoekmachinebeschrijvingen.

In dit artikel wordt uitgelegd hoe je voor je zoekmachine (of een willekeurige zoekmachine) zelf een zoekmachinebeschrijving kunt maken zodat de bezoekers via het zoekvak van de browser binnen jouw website kunnen zoeken. Daarnaast wordt uitgelegd hoe je voor Firefox 2-browsers het zoekvak uit kunt breiden met trefwoordsuggesties.

Zoekmachinebeschrijvingen

Een OpenSearch-zoekmachinebeschrijving is een XML-bestand waarin wordt aangegeven hoe een zoekopdracht uit het zoekvak moet worden verstuurd naar de zoekmachine. Een voorbeeld van een zoekmachinebeschrijving voor het Naar Voren-archief staat hieronder. Dit voorbeeld is eenvoudig aan te passen in een texteditor naar keuze.

<?xml version="1.0" encoding="UTF-8" ?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
 <ShortName>Naar Voren</ShortName>
 <Description>Zoek artikelen in het Naar Voren archief</Description>
 <Url type="text/html" template="http://search.atomz.com/search/?sp-a=sp100207b6&sp-f=iso-8859-1&sp-q={searchTerms}" />
 <Image height="16" width="16" type="image/x-icon">http://naarvoren.nl/favicon.ico</Image>
</OpenSearchDescription>

Hieronder worden de verschillende onderdelen van bovenstaande zoekmachinebeschrijving verder toegelicht.

XML

We beginnen met de standaard XML-openingstag. Daar hoef je niets aan veranderen.

<?xml version="1.0" encoding="UTF-8" ?>

OpenSearchDescription

Om aan te geven dat het om een OpenSearch-bestand gaat worden de beschrijvende elementen omsloten door OpenSearchDescription-tags.

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
...
</OpenSearchDescription>

Binnen deze OpenSearchDescription wordt vervolgens een aantal eigenschappen van de zoekmachine vastgelegd.

ShortName

ShortName is het element waarin de korte naam van de zoekmachine plug-in wordt gedefinieerd. Deze naam verschijnt in het zoekvak als er nog geen zoekopdracht is ingetikt. Zorg er gezien de geringe grootte van het zoekvak dus voor dat deze ShortName ook kort en duidelijk is. Lange namen worden afgekapt in het zoekvak.

<ShortName>Naar Voren</ShortName>

Description

Description is een uitgebreidere omschrijving van de zoekmachine.

<Description>Zoek artikelen in het Naar Voren archief</Description>

Url

Url is het webadres van de resultaatpagina van de zoekmachine. In dit webadres wordt de daadwerkelijke zoekopdracht vervangen door {searchTerms}. De browser weet op die manier op welke plek de inhoud van het zoekvak moet worden ingevuld.

Let op: de schrijfwijze van de elementnaam is Url.

<Url type="text/html" template="http://search.atomz.com/search/?sp-a=sp100207b6&sp-f=iso-8859-1&sp-q={searchTerms}"


Welke waarde je in het template-attribuut van bovenstaande Url-tag moet zetten kun je voor een willekeurige zoekmachine op de volgende manier achterhalen :

  1. Ga naar het zoekveld op de webpagina van de zoekmachine waarvoor je een beschrijving wilt maken.
  2. Vul in het zoekveld een uniek maar makkelijk te herkennen onzintrefwoord in; bijvoorbeeld BEURSVERLANGEN
  3. Voer de zoekopdracht uit door op de zoekknop te klikken
  4. Nadat de resultaatpagina is geladen kijk je in de adresbalk of er een Url staat waarin het woord BEURSVERLANGEN voorkomt
  5. Als je het woord ziet staan, dan kopieer je de Url, plakt deze in het template-attribuut van de bovenstaande Url-tag en vervang je het woord BEURSVERLANGEN door {searchTerms} zodat de zoekmachine weet dat daar de zoekopdracht (de inhoud van het zoekvak) moet worden ingevuld.
  6. Zie je het woord niet in de Url staan, dan gebruikt de zoekmachine waarschijnlijk de POST-methode om de zoekopdracht door te geven aan de zoekmachine. Voor deze zoekmachines is het momenteel nog niet mogelijk om zoekmachinebeschrijvingen te maken die in alle browsers werken.

Image

Via het element Image kan een afbeelding van 16 x 16 pixels worden opgegeven, waardoor je bijvoorbeeld in Firefox kunt zien wat de huidige actieve zoekmachine is. In de meeste gevallen kun je hier een verwijzing opnemen naar het favicon van de zoekmachine.

<Image height="16" width="16" type="image/x-icon">http://naarvoren.nl/favicon.ico</Image>

Valide XML

Het XML-bestand plaats je na aanpassing vervolgens ergens op een voor publiek toegankelijke plek op de webserver. Let er op dat de zoekmachinebeschrijving een validerend XML-bestand moet zijn. Een snelle controle kun je uitvoeren door het geüploade bestand op te roepen in je browser. Indien het niet valideert zal de browser hoogstwaarschijnlijk gaan klagen met een foutmelding.

Daarna moet je nog laten weten aan je bezoekers dat ze de website aan het zoekvak van hun browser kunnen toevoegen. Hoe dat in zijn werk gaat lees je hieronder.

Automatische ontdekking

Net zoals een browser op een website kan ontdekken of er RSS-feeds aanwezig zijn is het straks mogelijk om op een vrij eenvoudige manier zoekmachines aan de zoekbalk toe te voegen voor sites waar een dergelijke plugin wordt aangeboden.

<link rel="search" type="application/opensearchdescription+xml"
title="Mijn zoekmachine" href="http://mijnsite.nl/OpenSearch.xml" />

Hou het title-attribuut kort omdat dit gebruikt wordt in het keuzemenu van het zoekvak. Een te lange naam wordt ingekort als deze te lang is voor de weergave in het keuzemenu. Daardoor kan het lastig worden om de juiste zoekmachine te selecteren.

Zorg er voor dat het titel-attribuut in de link precies hetzelfde is als de ShortName in het XML-definitiebestand. Als deze namen niet hetzelfde zijn zal de browser aan blijven geven dat de zoekmachine geïnstalleerd kan worden.

Internet Explorer Auto-discovery Firefox Auto-discovery

Nadat er voor een website een zoekmachine plug-in is gedefinieerd en een autodiscovery-linkje is toegevoegd aan de pagina dan zal het blauwe drop-down pijltje naast de zoekbalk in Internet Explorer oranje oplichten en er in Firefox 2 een blauw rondje rond het dropdownpijltje van het zoekvak komen te staan.

Standaardisatie?

In de versies van Firefox voor versie 2.0 was Mycroft het standaard zoekmachinebeschrijvingsformaat. In de praktijk liepen Mycroft-ontwikkelaars tegen een aantal praktische beperkingen aan. Een van de grootste bezwaren aan de eerdere versies van de Firefox-zoekbalk was de afwezigheid van POST-methode ondersteuning.

Omdat de ontwikkelaars van Firefox het probleem vanuit de browser benaderen i.p.v. vanuit de standaard zoals de Opensearch-ontwikkelaars hebben zij de specificatie uitgebreid met de eerder genoemde elementen. Deze uitbreiding, bekend onder de naam MozSearch, heeft als voornaamste verschil dat ook de zoekmachineaanroep via de POST-methode ondersteund wordt. Hierdoor kunnen derden ook zoekmachinedefinities ontwikkelen voor sites die alleen de POST-methode gebruiken.

Let op: De ontwikkelaars van Internet Explorer zijn hier echter nog niet in meegegaan. Voor websites in eigen beheer verdient het de aanbeveling om met de GET-aanroep te werken als dat mogelijk is, omdat deze door meerdere browser ondersteund wordt.

Een Mozsearch-bestand is te herkennen aan de aangepaste omhullende OpenSearchDescription-tags.

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">

De belangrijkste toevoeging aan OpenSearch in MozSearch zijn de volgende twee elementen:

Ontwikkelaars die voor sites van derden die de POST-methode gebruiken zoekmachinebeschrijvingen ontwikkelen vinden uitgebreidere informatie over Mozsearch-specifieke toevoegingen op de Mozsearch-website.

Trefwoordsuggesties

Trefwoordsuggesties verschijnen zodra je een zoekopdracht in begint te tikken in de zoekbalk. Op basis van het al ingetikte deel van de zoekopdracht wordt er in de database gekeken welke eerdere zoekopdrachten (of welke geïndexeerde trefwoorden) het ingegeven patroon bevatten.

In bepaalde gevallen kan het raadzaam zijn om alleen suggesties te geven die ook resultaten opleveren. Bijvoorbeeld bij een woordenboeksite kun je uit de trefwoordsuggesties al opmaken of een bepaald woord wel of niet voorkomt zonder dat je de zoekopdracht daadwerkelijk uit hoeft te voeren. voorbeeld trefwoordsuggestie

Bronnen

Voor de trefwoordsuggesties kun je gebruikmaken van een specifiek veld uit een databasetabel. Of kun je bijvoorbeeld suggesties doen aan de hand van eerder gelogde zoekopdrachten van je bezoekers. Je zou ook de trefwoordindex van je zoekmachine kunnen gebruiken om daar suggesties mee te doen. Op die manier kan een bezoeker direct zien of een bepaald woord überhaupt op de website voorkomt.

Sortering

Daarnaast kun je de weergave van de suggestielijst nog beïnvloeden zodat het voor de gebruiker nog makkelijker wordt, door bijvoorbeeld de sortering op een van de volgende manieren aan te passen:

In de praktijk zal moeten blijken welke bronnen en sortering het best gebruikt kunnen worden. Het hangt sterk af van het soort website dat je wilt ontsluiten en de toegang tot bepaalde bronnen om suggesties uit te kunnen doen.

Script

Voor het onderstaande voorbeeld ga ik er vanuit dat je de beschikking hebt over een server met PHP en een MySQL-database met een tabel waar je de suggesties uit kunt halen. De inrichting van de server en de opbouw van een database vallen buiten dit artikel.

Het onderstaande script gaat in een veld van een tabel op zoek naar de trefwoorden waarvan het begin overeenkomt met de tot dusver ingetypte karakters in het zoekvak. De eerste tien resultaten worden in een speciaal formaat weergegeven zodat de browser deze als suggesties kan tonen.

<?
mysql_connect (localhost, 'GEBRUIKERSNAAM','WACHTWOORD' );
mysql_select_db (DATABASE);

$buffer.='["'.$_GET['q'].'", [';
if($_GET['q']!="") {
 $result = mysql_query ('select * from TABEL WHERE VELD like "'.$_GET['q'].'%" LIMIT 0,10');
 if ($row = mysql_fetch_array($result)) {
  $buffer.='"'.$row['VELD'].'"';
  while($row = mysql_fetch_array($result)) {
        $buffer.=', "'.$row['VELD'].'"';
  } ;
 }
}
$buffer.='], "", ""]';
echo $buffer;
?>


In bovenstaand script zou je in de query TABEL en VELD moeten vervangen door de naam van de tabel en het veld waar je de suggesties in op wilt zoeken. Daarnaast moet je GEBRUIKERSNAAM, WACHTWOORD en DATABASE nog vervangen door de juiste waardes om een connectie vanuit PHP met je MySQL-database mogelijk te maken.

Sla het bovenstaande PHP-script op met de bestandsnaam suggestie.php en plaats het ergens op een publiek toegankelijke plek op de server.

Aanpassen zoekmachinebeschrijving

Nu moet je nog onderstaande regel opnemen in de eerder gemaakte zoekmachinebeschrijving zodat Firefox weet dat er trefwoordsuggesties kunnen worden opgezocht.

<Url type="application/x-suggestions+json" method="GET" template="http://WWW.DOMEINNAAM.NL/suggestie.php?q={searchTerms}" />

Het template-attribuut moet verwijzen naar de locatie van het suggestie.php-bestand op de server. Voor een goede werking van de trefwoordsuggesties moet je er trouwens voor zorgen dat de Url-tag van de trefwoordsuggesties (te herkennen aan het type application/x-suggestions+json in de zoekmachinebeschrijving) ná de Url-tag met de eigenlijke aanroep van de zoekmachine komt (in de meeste gevallen te herkennen aan het type text/html).

Zet na aanpassing het bestand op de server en installeer de zoekmachinebeschrijving vervolgens (opnieuw) in je Firefox-browser. Daarna zou er een lijstje met suggesties moeten verschijnen zodra je begint te typen in het zoekvak.

Let op: Internet Explorer 7 ondersteunt dit soort trefwoordsuggesties niet.

Ten slotte

Bovenstaand script is op allerlei manieren uit te breiden. Je zou bijvoorbeeld de trefwoordsuggesties uit kunnen breiden met bijvoorbeeld fouttolerant zoeken (pannekoek toont als suggestie pannenkoek) of je zou afkortingen voluit kunnen weergeven in de trefwoordsuggesties (ww toont als suggesties werkeloosheidswet en werkwoord).

Voldoende mogelijkheden dus om bezoekers nog beter te helpen bij het vinden van informatie op jouw website.

Auteur

Albert de Klein

ontwierp en bouwde o.a. de websites Taaladvies.net en Woordenlijst.org, de onlineversie van het Groene Boekje en was de afgelopen jaren verantwoordelijk voor de internetprojecten van de Nederlandse Taalunie.

Hij heeft sinds hij Lotus Magellan als tiener installeerde op zijn pc een fascinatie voor zoekmachines en vindt het internet het beste Sinterklaascadeau dat hij ooit in zijn schoen vond. Hij maakt zich wel zorgen over wat de goedheiligman inmiddels over iedereen in zijn grote boek heeft staan.

Publicatiedatum: 06 maart 2007

Let op

Naar Voren is op 18 juli 2010 gestopt met publiceren. De artikelen staan als een soort archief online. Het kan dus zijn dat de informatie verouderd is en dat er inmiddels veel betere of makkelijkere manieren zijn om je doel te bereiken.

Copyright © 2002-heden » NAAR VOREN en de auteurs