Cosa?
Breve howto su come creare una maschera di ricerca locale. Il risultato finale sarà una pagina web da poter utilizzare come propria home page, dalla quale si potranno lanciare una serie di ricerche.Graficamente, la pagina principale apparirà così:
Perché
Per avere sempre a portata di mano un sistema rapido per effettuare ricerche di vario tipo.Nello specifico, il sistema completo (si possono benissimo tralasciare i pezzi che non interessano o aggiungerne altri a piacimento) consentirà ricerche su:
- google (testo, gruppi ed immagini).
- la cache di wwwoffle.
- i documenti locali in /usr/share/doc/, le pagine man ed info.
- IMDb: perché la vita è troppo breve per andare al cinema (un soldino a chi indovina la citazione non letterale senza fare ricerche su IMDb).
- Freshmeat.
- i dizionari installati.
Con cosa?
- Un web browser qualsiasi.
- Un web server con supporto per PHP; nel mio caso Apache, ma non dovrebbero esserci problemi con altri server.
- Un motore di ricerca locale, in questo caso htdig.
- man2html, un cgi per leggere le pagine man via http.
- info2www, un cgi per leggere le pagine info via http.
- Un proxy/cache http, in questo caso wwwoffle.
- Un dictionary server, come dictd.
- Un cgi per accedere al dictionary server via web (qui fornito).
Come?
Mettendo insieme un pezzo alla volta.Qui di seguito vengono forniti i file che non sono presenti in una normale installazione dei singoli servizi utilizzati o che sono stati modificati in maniera significativa; non verranno date indicazioni su come installare i vari software necessari o come configurarli: si parte dal presupposto che già funzionino correttamente.
Le pagine web
La pagina index.php è una pagina PHP contenente i form per lanciare le ricerche. Il supporto JavaScript attivo è richiesto solo se si vuole poter cambiare al volo il tipo di ricerca con google (si poteva fare in altri modi, ma sono pigro).Va messa nella DocumentRoot di apache; si può anche cambiarle nome (mantenendo l'estensione .php): non si offende.
La pagina docindex.html è un elenco delle
risorse che si vogliono indicizzare con htdig.
Va messa nella stessa directory con index.php.
Files
index.php.gz | la pagina da usare come home page. è compressa non per questioni di spazio ma per evitare che il server interpreti il codice php. |
docindex.html | pagina che verrà considerata da htdig come indice della documentazione locale. |
apache
Il web server deve avere attivo il supporto per PHP; in apache 1.3, per avere il supporto PHP4, è sufficiente mettere nel file di configurazione la riga:LoadModule php4_module /usr/lib/apache/1.3/libphp4.soOra si deve fare in modo che la directory /usr/share/doc/ sia accessibile tramite il server web; aggiungere queste righe al file di configurazione di apache:
Alias /doc /usr/share/doc <Directory /usr/share/doc> Options Indexes FollowSymLinks AllowOverride None Order deny,allow Allow from 127.0.0.1 Deny from all </Directory>
man2html e info2www
Tutto quel che serve è installarli; le pagine man saranno raggiungibili dall'url http://localhost/cgi-bin/man2html e le pagine info da http://localhost/cgi-bin/info2wwwhtdig
Verrà usato per indicizzare i documenti locali che si trovano in /usr/share/doc/ e le pagine man e info.Leggere i commenti del file htdig.conf.
I due script di supporto, htdig-uncompress e htdig-totext (che andranno resi eseguibili) richiedono che sul sistema siano installati i seguenti programmi: zcat, bzcat, cat, pdftotext, pstotext, catdoc oppure word2x.
Files
/etc/htdig/htdig.conf | file di configurazione di htdig |
/etc/htdig/bad_words | il file di default con le parole da escludere,
più una manciata di parole italiane. L'elenco delle cento/mille/dicimila parole inglesi (e non solo) più comuni si trova qui: http://wortschatz.uni-leipzig.de/html/wliste.html |
/usr/local/bin/htdig-uncompress | usato per decomprimere file .gz, .Z e .bz2 |
/usr/local/bin/htdig-totext | usato per convertire in solo testo i file pdf, ps e msdoc |
Prima dell'utilizzo
Una cosa da fare una volta sola è la creazione di un paio di database che serviranno poi per semplificare la ricerca, eseguendo i comandi:htfuzzy synonyms htfuzzy endings
Creazione dell'indice
La prima volta che si crea l'indice è bene sorvegliare cosa sta succendendo: eseguire in console o in un XTerm il comando rundig -i ed eventualmente seguire, con un tail -f i file di log di apache per controllare che l'indicizzazione proceda.È comunque normale che compaiano messaggi di errore di zcat, di pdftotext e pstotext: sono dovuti al fatto che ricevono solo i primi 200KB di dati di file più lunghi.
Altra cosa da tenere a mente è che l'indicizzazione di una tale quantità di dati è un processo per forza di cose molto lento (decine di minuti se non ore) e che richiede molto spazio libero su disco (fino al gigabyte, direi).
Aggiornamento del database
Tra gli script di cron dovrebbe essercene uno che richiama rundig periodicamente; dato che le informazioni in /usr/share/doc/ e le pagine man ed info non cambiano molto spesso, può essere opportuno rigenerare l'indice al più una volta la settimana.Note
Normalmente htdig viene gestito tramite lo script /usr/bin/rundig; per come lo uso io, può essere una buona idea modificarlo aggiungendo alla fine le seguenti righe:htfuzzy accents rm -f /var/lib/htdig/db.wordlistper generare il database delle lettere accentate (per poterle poi usare nelle ricerche) e per cancellare il file db.wordlist (che occupa una notevole quantità di spazio e non è utile se si rigenera il database tutte le volte da zero).
wwwoffle
Non c'è molto da fare oltre alla normale installazione.Assicurarsi che in /etc/wwwoffle/wwwoffle.options ci sia l'opzione htdig, Altra cosa da verificare è che in uno dei file in /etc/ppp/ip-down.d/ ci sia qualcosa tipo:
if grep -w '^htdig' /etc/wwwoffle/wwwoffle.options > /dev/null; then /usr/share/wwwoffle/search/htdig/wwwoffle-htdig-lasttime fiche richiama lo script per aggiornare la cache con le pagine visitate durante l'ultima connessione.
In definitiva, per controllare che la propria configurazione di wwwoffle gestisca correttamente l'indicizzazione della cache con htdig, basta andare all'url http://localhost:8080/search/htdig/index.html e cercare qualcosa che si sa essere presente nella cache.
Note
Nel caso fosse necessario rigenerare da zero la cache di wwwoffle, si può usare lo script wwwoffle-htdig-full (distribuito con wwwoffle).dictionary server e cgi
Installare il dictionary server (dictd), tutti i dizionari di proprio interesse (vedere http://www.dict.org) ed il client (che deve chiamarsi dict).Installare il cgi Dict nella directory dei cgi del proprio web server e renderlo eseguibile; questo script è preso da http://www.dict.org ed è stato leggermente modificato da me.
Files
/usr/lib/cgi-bin/Dict | il cgi usato per interrogare il server locale (o quello remoto se il primo non risponde) |
Note
Per verificare che il cgi funzioni correttamente, andare all'url http://localhost/cgi-bin/Dict; verificare che la maschera compaia e che la ricerca di vocaboli funzioni.Fine...
Non resta che far puntare il browser all'url http://localhost/index.php e verificare che i vari form funzionino tutti correttamente.Per dubbi, consigli, sfoghi isterici, contattatemi pure all'indirizzo alberanid@libero.it