Modent produkt
Htdig er en site-orienteret søgemaskine udviklet af San Diego State University. Den har en del år på bagen og bærer i øjeblikket versionsnummeret 3.1.6, så der er angiveligt tale om et stabilt, modent produkt. Htdig kan ikke bruges som webspider ligesom Google, AltaVista og så videre, men sigter mod mellemstore sites og intranet.
Htdig er udviklet under Linux, men kan benyttes under en række andre Unix'er, som Solaris, HP/UX, IRIX, de fleste BSD'er samt Mac OS X, og programmet kan endda køre under Windows NT med Cygwin-afviklingsmiljøet. Der findes binære versioner til en lang række systemer, og i nogle Linux-distributioner følger Htdig med.
Htdig har mange gode funktioner. Htdig indekserer dokumenter som robot, hvor den opfører sig som en browser, og på den måde kan den indeksere hvad som helst - også dynamisk genererede sider.
Udover HTML-sider kan Htdig også parse og indeksere PDF-filer og Word-dokumenter ved hjælp af andre open source-kodebiblioteker.
Brugeren kan foretage flere slags søgninger: Søgning med logiske (boolske) operatorer, og såkaldt "fuzzy" (fonetisk) søgning er endda også understøttet.
Der er ikke nogen smart webgrænseflade til at konfigurere programmet med, men Htdig byder i stedet på god gammeldags konfiguration med en tekstfil, som heldigvis har en ganske forståelig syntaks.
Htdig er et selvstændigt program, som opsættes til webserveren via CGI. Htdig kommer med sin egen database, så der er ikke noget at rigge til. Det er ikke lige til at vurdere størrelsen af den fremkomne database, skriver udviklerne bag Htdig, men nævner som eksempel, at deres eget site med 13.000 indekserede dokumenter giver en databasestørrelse på omkring 150 megabyte.
Installation
Vi startede med at springe over hvor gærdet var allerlavest, nemlig ved at benytte den version af Htdig, som følger med Red Hat 7.2.
Htdigs konfigurationsfil /etc/htdig.conf indeholder en mængde muligheder for at konfigurere Htdig. Alle konfigurationsmulighederne er gennemgået ganske udmærket i dokumentationen til Htdig, og de fleste af dem er let forståelige.
Indeksering
Som udgangspunkt er Htdig sat op til at indeksere websider med udgangspunkt i adressen http//localhost/ og videre derfra, hvilket altså indekserer alle de websider, som er tilgængelige via navigation fra websitets åbningsside. Direktivet ser sådan ud:
start_url: http://localhost
Der kan finpoleres yderligere ved at specificere, hvilke ting robotten skal indeksere, og den overholder også robot-specifikationerne (robots.txt). Det er samme syntaks, som benyttes gennem hele konfigurationsfilen, og det er ikke så slemt at gå til.
Når konfigurationsfilen er sat op på den ønskede facon, så skal robotten sættes i gang med at spise websiderne, og den indekserede kode skal parses og puttes ned i Htdigs database. Processen er opdelt i en række forskellige delprogrammer, men det hele kan afvikles med en enkelt kommando Rundig, som køres fra et terminalvindue.
Databasen skal selvfølgelig opdateres, efterhånden som sider bliver tilføjet og fjernet fra websitet, og det kan man automatisere med crontab. Se f.eks. Red Hats dokumentation.
Det tog knap et blink med øjnene at afvikle Rundig-kommandoen i vores tilfælde, hvor der ikke var meget andet at indeksere end Apache-manualen.
Dernæst skal Apache sættes op, så vi kan bruge vores søgemaskine. Som nævnt er Htdig delt op i en række mindre programmer, og den som udfører søgningerne i databasen og returnerer resultaterne til webserveren, hedder meget passende Htsearch. Htsearch kan også afvikles via et terminalvindue, hvilket er praktisk, hvis man har behov for at debugge.
Opsætning og tilretning
I Red Hat 7.2-installationen befandt Htsearch sig i /usr/bin/ sammen med de andre programmer, som indgår i Htdig. Vi skabte et link (henvisning eller genvej) til Htsearch ved blot at højreklikke og hive filen over i mappevinduet /var/ww/cgi-bin/ under skrivebordet Gnome - for det er så nemt.
I Apache-konfigurationen, som i Red Hat 7.2 er placeret i /etc/httpd/conf/, og den hedder jo httpd.conf, skal /var/wsw/cgi-bin/ så sættes op som cgi-mappe, og server-direktivet FollowSymLinks skal sættes, så Apache ved, at når brugeren kalder vores lænke i mappen /var/wsw/cgi-bin/ ved at indtaste adressen http://localhost/cgi-bin/htsearch, så skal Apache køre htsearch-programmet, som altså stadig ligger i /usr/bin. Det lyder måske lidt kringlet, men det er egentligt ganske simpelt.
Følgende linier tilføjes Apache-konfigurationsfilen
ScriptAlias /cgi-bin/ '/var/www/cgi-bin/'<Directory '/var/www/cgi-bin'>
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
Herefter skal man skrive en HTML-side med en søgeformular på, og det kan gøres på flere måder. Der følger et eksempel med i dokumentationen, og det kan man blot kopiere og indsætte i et HTML-dokument. I vores Red Hat 7.2-installation er der også et eksempel på søgesiden search.html i kataloget /usr/share/htdig/. Hvis cgi-bin-mappen ligger et andet sted en sædvanligt, skal man dog lige ændre ACTION-parameteren i FORM-mærket.
Det er altså ikke særligt svært at få Htdig på banen, og når man er kommet så langt, er der som tidligere nævnt et utal af konfigurationsmuligheder.
Resultat-siderne kan tilrettes ved hjælp af skabeloner. Skabelonerne kan opsættes i konfigurationsfilen eller indsættes som parametre i skjulte formular-felter, som det kan ses i dette eksempel fra en anvendelse af Htdig.
Hvert enkelt søgeresultat kan formateres med en lang række variabler, og der kan man tage udgangspunkt i de to filer long.html og short.html, som i Red Hat 7.2-installationen befinder sig i kataloget /usr/share/htdig/. Det kan se sådan ud:
<dl><dt><strong><a href='$&(URL)'>$&(TITLE)</a></strong>$(STARSLEFT)
</dt><dd>$(EXCERPT)<br>
<em><a href='$&(URL)'>$&(URL)</a></em>
<font size='-1'>$(MODIFIED), $(SIZE) bytes</font>
</dd></dl>
Derudover skal disse skabeloner opsættes med direktivet template_map i konfigurationsfilen.
En spændende funktion er muligheden for at indeksere Word, Excel, PowerPoint, PostScript og PDF-filer. Det gøres ved en kombination af open source-kodebiblioteker, som kan parse Word- og PDF-dokumenter, og et Perl-script, som virker i forlængelse af htsearch-programmet. Der er mere information om denne spændende mulighed i dokumentationens FAQ, punkt 4.8.