Salve a tutti e piacere di conoscervi.
Mi chiamo Rosario Sancetta e sono un programmatore lato client dal 1991 e lato server dal 2001, nonostante ciò ho solo 33 anni.
Ho provato il progetto di Teeco e anch'io nel mio piccolo (visto che ho costruito un motore di ricerca tutto da solo), volevo darvi dei consigli e spiegarvi quello che ho fatto io in questi mesi.
Il mio lo trovate a questo indirizzo gooliv.com dopo le 10 di mattina fino alle 8 di sera, questo perchè sfrutta un server proprio che putroppo non posso tenere sempre attivo,quindi lo spengo di notte.
Ma andiamo a cose più pratiche e vediamo di pari passo cosa ho fatto.
Passo 1 : Un server mio
Prima di tutto quindi occorre un server proprio. Questo perchè quando i dati diventano tanti da gestire, diventa costoso utilizzare spazi web su internet, sia essi gratuiti che a pagamento.
Passo 2 : Motore di ricerca in php
Ho creato 3 algoritmi.
1 - Algoritimo pertinente
2 - Algoritimo di gradimento
3 - Algoritmo della disperazione
In pratica quando l'utente fa una ricerca il primo algoritimo cerca solo i risultati pertinenti attraverso un sistema di filtraggio per rendere la ricerca veloce. Perchè il PHP quando deve gestire molti dati inizia a diventare molto lento (Molti parliamo di 500.000 pagine a salire)
Se non trova nulla passa ad un algoritimo di gradimento, un pò più lento, ma che tutto sommato in linea di massima si tiene sui valori di pertinenza.
Se anche questo algoritmo fallisce, passa all'algoritimo della disperazione,ovvero a quell'algoritmo che in un modo o nell'altro, qualcosa fuori la deve portare, anche se il tempo diventa troppo eccessivo perchè non c'è filtraggio e i risultati in linea di massima sono a casaccio.
Da quello che ho visto su Teeco quando il database è abbastanza carico,diventerà molto lento.
Comunque ci sono tanti modi per fare le ricerche in php, questione di logica e di programmazione.
Passo 3 : Lo spider
Lo spider che ho creato io rispetto a quello vostro in PHP, l'ho fatto in Visual Basic. Precisamente ho creato 2 spider. Uno che va alla ricerca di Feed RSS, l'altro naviga libero sul web. Quello di Teeco, secondo il mio punto di vista non va bene. Infatti se io inserisco un url di una pagina precedentemente creata con molto termini (mettiamo che voglio fare spamming), lui li memorizza tutti, facendomi comparire sempre nelle ricerche che vado a fare con Teeco.
Ecco la logica che ho utilizzato io per fare lo spider (Si chiama Deep Web SR) :
Dato un indirizzo web iniziale : ad esempio beliceweb.it
Entra nel sito, e preleva tutti i link che ci sono ed inizia a scansionarli uno per uno.
Ad ogni links che scansiona trova altri links di altri siti e quando ha finito con quelli in memoria li carica (dopo aver verificato che non siano già stati segnalati*) e continua con questo processo... si può dire che non si ferma mai.
Per evitare che invii nuovamente le stesse informazioni, vengono fatti 2 controlli. Uno dallo spider che non ricarica in memoria quelli già visitati e l'altro nel momento in cui devono passare al database.
Su Ogni link che scansiona effettua comunque dei controlli di questo tipo :
1 - Ricava il titolo della pagina
2 - Ricava la descrizione
3 - Ricava le keywords
Controlla se ci sono corrispondenze (max 100 caratteri) tra il titolo, la descrizione e le keywords. Se ci sono corrispondenze memorizza i dati sul database, altrimenti scarta il link.
Per le pagine prive di titolo, descrizione e keywords invece, fa un parser della pagina, analizza 1024 bytes e se trova almeno tre corrispondenze identiche memorizza il sito,altrimenti lo scarta. Per esempio su un sito che parla di auto sprovvisto di tags, fa il parse e se trova per almeno 3 volte la parola auto, allora il risultato è true altrimenti e false.
In ultimo allego un'immagine dello spider :
che si trova qui : beliceweb.it/spider.jpg (si deve mettere prima http: // www . tutto unito)
perchè non ho i permessi di postare collegamenti e immagini)
Questo per ora è tutto. Vorrei continuare con questo post, ma capisco che è diventato molto lungo. Mi scuso a priori se non sono stato molto chiaro. Comunque in un modo o nell'altro continuate e portate avanti questo bellissimo progetto.
Spero di non essere stato invadente e se così fosse, chiedo scusa.
Grazie per la Vostra attenzione.
Best Regards,
Rosario Sancetta