home page::doc::hpsearch
Mimante.net

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:

Con cosa?


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.so
Ora 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/info2www

htdig

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.wordlist
per 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
fi
che 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