Dag 29: Gjøre alt søkbart

Alle nettsteder trenger et nettstedsøk. Punktum.

Regler for et godt nettstedsøk:

  1. Plasser søkeboksen på hver eneste side, helst «ovenfor hovedinnholdet» (synlig uten å måtte skrolle).
  2. Søker i alt innholdet som standard. Hvis du har et valg for å søke i innlegg, kommentarer, eller begge deler, gjør «begge deler» til standard.
  3. Ikke fyll opp søkeboksen din med avanserte valg, som boolsk logikk, sensitivitet for store og små bokstaver, eller regulære uttrykk. Velg som standard å etterligne Googles måte å gjøre det på (passe til alle ord, ikke passe til partielle ord, ikke passe til om det er store eller små bokstaver, ikke bruke regulære uttrykk) og gjør så valgene synlige på en egen separat «Avansert søk»-side.
  4. Gi søkeboksen din en skikkelig «label» og en tastatursnarvei. Jeg anbefaler accesskey="4". (Merk: På dag 15 ga jeg et eksempel på hvordan man definere tastatursnarveier til et søkeskjema, men jeg fikk gjort det feil. For å oppnå maksimum kompabilitet på tvers av nettlesere, så trenger du å definere tastatursnarveien på <label>, og ikke på <input>. Se eksempelet nedenfor for den korrekte syntaksen.)

Hvem har nytte av det?

Anne, Jørgen, Knut, Lillian, Marius, og stort sett alle andre i verden har nytte av et godt implementert nettstedsøk. Spesielt i en weblogg eller et nyhetsorientert nettsted hvor innholdet primært er organisert kronologisk, det er veldig frustrerende å prøve å finne et bestemt innlegg som ikke lenger ligger på forsiden. Det er ikke mange som vet om «site:domainname.com»-syntaksen til Google (for å begrense søkeresultatene til et bestemt domene), men Google reindekserer uansett bare én gang i måneden. Tilby ditt eget nettstedsøk.

Hvordan gjøre det

Greymatter har innebygd søkefunksjonalitet, men du kommer til å måtte tilpasse malen en smule for å tilby en tastatursnarvei til søkeboksen. Gå til «Edit Templates», «Miscellaneous Templates», «Search Form Template», og finn et skjema som dette:

<FORM ACTION="{{cgiwebpath}}/gm-comments.cgi" METHOD=POST>
<INPUT TYPE=TEXT NAME="gmsearch" SIZE=20>
<INPUT TYPE=SUBMIT VALUE="Search">
</FORM>

Og endre det til dette:

<FORM ACTION="{{cgiwebpath}}/gm-comments.cgi" METHOD=POST>
<label for="gmsearch" accesskey="4">Search for:</label>
<INPUT TYPE=TEXT id="gmsearch" NAME="gmsearch" SIZE=20>
<INPUT TYPE=SUBMIT VALUE="Search">
</FORM>

Movable Type-brukere kan prøve ut MT-Search tillegget. Jeg bruker dette på et kommende MT-drevet nettsted. Jeg prøvde det på min hoved-weblogg (900+ innlegg) og den var forholdsvis langsom, men den ser ut til å fungere greit på mindre nettsteder. Den blir ikke lenger aktivt utviklet, men den virker greit, til og med i den siste versjonen av Movable Type. (Merk: Hvis du bruker MySQL-versjonen av Movable Type 2.2 så trenger du å modifisere mt-search.cgi en smule.)

Hvis du har webloggen din på ditt eget domenenavn kan du bruke en tredjeparts søketjeneste som indekserer innholdet ditt og tilbyr søkeresultater etter etterspørsel. Populære alternativer på denne fronten inkluderer Atomz Express Search som Blogger.com anbefaler, og Google Free Web Search som jeg bruker på min egen weblogg. Begge kan tilpasses til en viss grad, og ganske fort også, selv om deres indeksering av innholdet ditt ikke er oppdatert umiddelbart. Begge tillater deg å modifisere utseende på søkeboksen din; mitt Google-drevne søkeskjema ser ut som dette (legg merke til bruken av <label> og accesskey):

<form id="searchform" method="get" action="http://www.google.com/custom">
<p id="searchlabel"><label for="q" accesskey="4">Search this site:</label></p>
<p id="searchinput"><input type="text" id="q" name="q" size="18" maxlength="255" value=" " /></p>
<p id="searchsubmit"><input type="submit" value="Search" />
<input type="hidden" name="cof" value="LW:116;L:http://diveintomark.org/images/eyes.jpg;LH:68;AH:left;GL:0;S:http://diveintomark.org/;AWFID:0d8ffcebe359c844;" />
<input type="hidden" name="domains" value="diveintomark.org" />
<input type="hidden" name="sitesearch" value="diveintomark.org" />
</p>
</form>

Merk: Du kan ikke klippe og lime dette inn i din egen weblogg. Hvis du ønsker å bruke Google Free Web Search så må du registrere deg og få din egen kode til det skjulte cof-feltet.

Les mer