Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Un motore di ricerca personale: udmsearch

        Scritto: Giansante Gabriele, 2001     

- Installazione
- Utilizzo
- Manutenzione dei dati
Uno strumento molto carino ed utile da aggiungere in un sito web e' un motore di ricerca locale, ovvero un sistema per cercare dei documenti all'interno del proprio sito.
Esistono diversi software, commerciali o liberi, utili allo scopo. Quello che utilizzeremo qui e' udmsearch, di libero utilizzo.

Vedremo come installare e far funzionare questo software, insieme a consigli pratici per aggirare eventuali problemi che si possono riscontrare, compreso il problema della manutenzione dei dati relativi all'indicizzazione.

Un motore di ricerca locale (ma anche uno generale, infatti udmsearch puo' essere utilizzato anche come motore di ricerca per tutto il web) ha bisogno di quattro componenti principali:
  • Il software di indicizzazione
  • Una form di ricerca
  • Un database dove memorizzare i dati
  • La configurazione delle pagine e dei server da includere nell'indice.
Inizialmente si installa il software.
Il passo successivo e' la configurazione, dove si indicano le pagine da indicizzare, le directory o addirittura i server. In questa fase possono (e devono) anche essere fatte altre configurazioni di minore importanza.
Una volta configurato il tutto, si puo' far partire l'indicizzazione, ovvero il riempimento del database con i dati utili ad effettuare tutte le ricerche.
Infine, il sistema e' pronto e, con l'opportuno script cgi, php, perl, ecc. possono partire le ricerche.

Il processo mostrato e' a carattere generale, ma si adatta particolarmente all'utilizzo di "udmsearch". Vediamo come.

Installazione

Per prima cosa dobbiamo procurarci il software da un qualsiasi repository oppure attraverso il nostro mirror di "www.mysql.com".

Per le prove abbiamo usato i seguenti prodotti:
  • Software: udmsearch 3.1.3
  • Server DB: MySQL (diverse versioni fra quelle valide)
  • Server WEB: Apache
  • Linux: RedHat Linux 6.2/7.0
Gli strumenti di compilazione sono gia' presenti nella distribuzione linux usata.

Vediamo i passi necessari per una corretta installazione:
  1. Scompattare il software. Si puo' procedere in due modi (anche piu'). Il primo, piu' diretto, e' usare "tar -xzvf nomeFile.tar.gz"; il secondo prevede l'utilizzo di "mc", che e' in grado di entrare nei file compressi e di copiarne il contenuto dovunque si voglia. Personalmente preferisco il secondo metodo, piu' comodo.
  2. Spostarsi nella directory principale con i sorgenti del programma.
  3. Dalla directory principale si puo' avviare l'installazione, configurando eventualmente le opzioni del compilatore (non necessario). I passi per compilare ed installare il software sono i seguenti (qui si usera' MySQL, ma non e' l'unico DB supportato):

    • ./configure --with-mysql
    • make
    • make install
I passi da compiere sono estremamente semplici e non dovrebbero presentare problemi.
Alla fine si avra' il programma installato nella directory /usr/local/udmsearch. I file utili si troveranno in /usr/local/udmsearch/sbin (programma di indicizzazione); in /usr/local/udmsearch/etc (per la configurazione); in /usr/local/udmsearch/bin (gli script di ricerca).

Utilizzo

Si puo' suddividere la parte di utilizzo in tre fasi:
  • Generazione e configurazione del Database
  • Configurazione del software, comprensiva della configurazione del sito (o dei siti) da indicizzare
  • Indicizzazione delle pagine del sito WEB.
Generazione e configurazione del Database

Supponiamo di avere a disposizione per MySQL l'accesso con l'utente root (un utente MySQL e' diverso da un utente di sistema, vedere documentazione MySQL). E' comunque possibile utilizzare un altro utente gia' esistente.
Sempre rimanendo nella directory principale con il sorgente di udmsearch (e non la directory dove e' stati installato), creiamo il database che verra' usato dal programma:
mysqladmin -uroot -p create udmsearch
Con questo comando viene creato il Database "udmsearch". Verra' chiesta la password per l'utente "root" (l'avete settata, vero?).
Vanno create, adesso, le tabelle e le strutture necessarie:
mysql -uroot -p udmsearch <create/mysql/create.txt
Il file create.txt contiene il codice SQL necessario alla creazione delle tabelle. Anche qui verra' chiesta la password dell'utente MySQL "root".

Configurazione del software

Questa fase consiste essenzialmente nella modifica di due file di configurazione.
I file, situati in /usr/local/udmsearch/etc, sono indexer.conf-dist e search.htm-dist che andranno copiati (e non rinominati, in modo da mantenere gli originali) rispettivamente come indexer.conf e search.htm.
Il primo, "indexer.conf", viene utilizzato dal programma di indicizzazione (/usr/local/udmsearch/sbin/indexer), mentre il secondo, "search.htm", e' usato dallo script di ricerca (/usr/local/udmsearch/bin/search.cgi).
Le opzioni veramente importanti sono poche. Innanzitutto, vi e' l'accesso al DB. Una volta individuata la riga corrispondente, su entrambi i file, sara' necessario scrivere una cosa del tipo:
#DBAddr <DBType>:[//[DBUser[:DBPass]]DBHost[:DBPort]]/DBName/
DBAddr          mysql://root:xyzkj@pippo.com:3306/udmsearch/
Ovviamente, mentre per "indexer.conf" va bene anche usare "root" come utente (tanto viene usato solo dall'amministratore durante la creazione dell'indice), per "search.htm" e' opportuno utilizzare un utente con solo il privilegio di lettura (query).
Ancora, per "indexer.conf" altre due opzioni importanti sono la dimensione minima di una parola (e' opportuno non indicizzare parole con meno di quattro caratteri) e come vengono seguiti i link di ogni pagina. Ovvero, e' possibile specificare di seguire anche i link che puntano ad altri siti/server/pagine diversi da quelli indicati (vedi piu' avanti). Una buona politica e' l'indicare tutte le pagine direttamente nella configurazione e disabilitare la creazione dell'indice sulle pagine che puntano all'esterno (si vedra' piu' avanti perche' e' comoda questa soluzione). L'ultimo parametro importante e' quello che permette di specificare quali documenti indicizzare, secondo la seguente semplice notazione:
Server  http://www.pippo.com/pluto/info/carattere.html
Server  http://www.pippo.com/pluto
Server  http://www.pippo.com
La prima riga indicizza il file "carattere.html". La seconda riga, indicizza tutti i documenti validi (a seconda di come viene configurato il software) nella directory "pluto". La terza riga, infine, indicizza tutto il contenuto del sito "www.pippo.com". Si puo' indicare un numero virtualmente infinito di server (indirizzi). Occorre prestare attenzione pero' al fatto che le directory ed i file protetti non vengono inclusi nell'indicizzazione, a meno di non conoscere utente e password per accederci (opzione AuthBasic utente:password, vedi file di configurazione). Un'altra considerazione da fare e' che le pagine lette vengono generate dal server WEB, quindi tutto cio' che non e' accessibile con un browser, a seguito di una semplice query, non sara' accessibile neanche al programma di indicizzazione. Ad esempio, se ho una pagina con un form di generazione di indirizzi WEB, tali indirizzi non verranno mai inclusi nell'indice perche' non generati dalla richiesta semplice.
Passando a "search.htm", le principali modifiche che possono essere fatte, a parte l'indicazione del DB come mostrato, riguardano lo stile della pagina ed i testi in essa contenuti. Ad esempio si puo' pensare di scrivere i testi in italiano e di adattare lo stile grafico a quello del proprio sito.

Indicizzazione ed abilitazione ricerca

Una volta che tutto e' stato configurato correttamente, indicizzare diventa banale, veloce ed anche un po' noioso.
Con il comando
/usr/local/udmsearch/sbin/indexer -v 4
e' possibile indicizzare tutto cio' che e' stato configurato con l'opzione Server. L'opzione "-v" sta per "verbose", ovvero il livello di informazione visualizzata sull'output in fase di indicizzazione. Il livello di maggior dettaglio e' 5, ma gia' il 4 e' un buon livello, non troppo ingombrante ed esaustivo.
La ricerca viene abilitata copiando il file "/usr/local/udmsearch/bin/search.cgi" nella propria directory cgi-bin configurata con Apache. Per effettuare la ricerca si puo' caricare lo script "http://www.pippo.com/cgi-bin/search.cgi".

Siamo arrivati alla fine, ed ora il programma dovrebbe essere perfettamente funzionante in ogni sua parte.


Manutenzione dei dati

La manutenzione dell'indice consiste nel ricreare l'indice periodicamente in modo da riflettere ogni cambiamento o aggiunta di pagine.

L'impostazione che consigliamo e' di inserire in "indexer.conf" tutte le pagine, una ad una, e non solo l'indicazione generica del sito. Il programma di indicizzazione, ogni volta che si prova a ricreare l'indice, non ripercorre di nuovo tutte le pagine, ma cerca di inserire nell'indice solo le ultime, ovvero quelle che non sono mai state inserite. Il comportamento e' ragionevole, e si adatta perfettamente all'inserimento a mano, volta per volta, delle pagine nuove nel file di configurazione.
Indicare nel file di configurazione solo il dominio e' pericoloso per questo motivo. Si rischia di non indicizzare mai le nuove pagine.
Per i piu' ostinati, si puo' ricreare comunque l'indice da zero (e' molto piu' lento rispetto al semplice update). Per farlo, prima di lanciare il comando di indicizzazione, e' necessario cancellare il contenuto del database nel seguente modo (oppure accedendo direttamente a mysql, sconsigliato):
/usr/local/udmsearch/sbin/indexer -C

Per avere un'idea delle dimensioni a cui si puo' arrivare con il DB, ecco qualche numero che abbiamo potuto verificare:
800000 vocaboli: 20Mb di tabella.
6300 url memorizzate: 4Mb di tabella.

Con questi dati, tempo tipico di ricerca misurato: da 0.1 secondi a 0.9 secondi.

Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'