• Community Manager

    Ecco il Mootore di Ricerca

    Siamo partiti tempo addietro con un progetto interessantissimo per il Forum GT: un semplice motore di ricerca.

    E pensate un pochino, **ci siamo riusciti!!!!

    **Merito dei ragazzi che si sono impegnati in questo periodo nello sviluppo. Rinzi e Stealth che all'inizio hanno progettato e programmato le basi e tonyx che ha approfondito sistemando i layout, le funzioni e due algoritmi.

    Non è il nostro punto di arrivo questo e neanche di partenza: E' un embrione 😄

    Il Mootore
    | Lo Spider | Le ricerche effettuate

    Attenzione, il progetto è molto più grande e più interessante di questo test/esperimento/studio e ve lo presenteremo in tutto e per tutto nei prossimi giorni. (Non cambiate canale, anzi, premete F5 :D)

    Ora verrà Tonyx a spiegarvi cosa ha fatto. Non siamo arrivati a quanto volevamo, ma quasi vicini. Abbiamo mille idee ancora 🙂

    Tonyx resta a disposizione per spiegarvi come funzionano i sorgenti e li mettiamo a vostra disposizione 🙂

    Ci piacerebbe in questo topic avere le vostre impressioni/idee/suggerimenti/considerazioni e via dicendo.

    Ci sono una 50ina di documenti indicizzati, niente di che 🙂

    Potete vedere le differenze dei due algoritmi, basta selezionarli 🙂

    Io ho imparato un bel pò stando in Chat a giudicare e cambiare e mi sono accorto che per uno studio tutti insieme sarebbe bene fare una cosa molto interessante. Vado a scrivere le basi del progetto, a creare le aree, a pubblicare il tutto e preparare qualche comunicato stampa 😄

    Il vero studio inizierà tra qualche giorno e/o settimana e si proterrà, speriamo, per i prossimi anni 😮

    Giorgio


  • Moderatore

    Che dire...

    ⭕o⭕o⭕o:o

    Prima di tutto un applauso immenso a tutti, siete stati grandissimi 😄

    Riguardo al motore, non vedo l'ora di saperne di più, di leggere i sorgenti...

    IMHO molto interessante la sezione spider che dà un peso ai documenti... :D:D:D


  • ModSenior

    Complimentoni, mi iscrivo subito alla discussione per seguire gli sviluppi 🙂

    Vogliamo sapere come funziona, che parametri prende in considerazione... 😄


  • Bannato Super User

    Per prima cosa un BRAVISSIMI a tutti coloro che si sono applicati nella realizzazione di questo "embrione" come lo chiama Giorgio.

    Io pur seguendo dall'inizio tutto l'evolversi del progetto, ho solo potuto fornire un misero supporto tecnico, sia per il tempo che non ho ormai più che per la consapevolezza di non essere all'altezza di chi ci ha lavorato.

    Complimenti quindi a tutti, e soprattutto grazie per volere condividere con tutti il vostro lavoro. Prevedo dei gran begli sviluppi viste le capacità e la volontà delle persone coinvolte.

    Bravi, davvero bravi.


  • Super User

    Complimentissimi ai tennici e agli algortimici 😄
    cmq cercando sesso esce un solo risultato!!! 😮


  • User Attivo

    Ciao a tutti,

    dopo aver atteso un pochino per gli algoritmi e la logica di funzionamento eccovela spiegata qui sotto.

    Il motore funziona contemporaneamente con due algoritmi, proprio per evideniziare le differenze di posizioni in base all'algoritmo adottato.

    1. Algoritmo a pesi semplici
      Questo algoritmo è molto semplice. Viene attribuito un peso ad ogni termine (d'ora in poi lo chiamiamo keyword) contenuto nel documento, valorizzando le keyword in modo diverso a seconda della posizione in cui si trovano, ovvero:
      Se la keyword è contenuta nel title allora gli si attribuisce un valore di 3
      Se la keyword è contenuta nel h1 allora gli si attribuisce un valore di 2
      Se la keyword è contenuta nel corpo della pagina allora gli si attribuisce un valore di 1
      Il peso totale per la keyword è dato da:
      num_ric_title3 + num_ric_h12 + num_ric_body
      dove per num_ric_title si intende in numero di volte (ricorrenze) che la keyword è trovata nel titolo.
      ESEMPIO PRATICO:
      Vogliamo calcolare il peso della keyword "SEO" contenuta in una pagina.
      Riscontriamo che nel titolo compare 1 volta, 1 volta nel h1 e 5 volte nel corpo della pagina il peso calcolato è:
      13 + 12 + 5 = 10
      La keyword "SEO" nel documento analizzato ha come peso 10.

    2. Algoritmo TfIDF (Term Frequency * Inverse Document Frequency)
      Questo algoritmo è leggermente più complesso, ma la sua logica è facile da capire.
      Questo algoritmo vuole premiare con un peso maggiore le keyword che nel documento sono più di frequente (Tf) e nello stesso tempo fà un controllo su tutti i documenti indicizzati per attribuire un peso minore alle keyword che compaiono in molti documenti, e un peso maggiore alle key più rare, questo perchè se una key è presente in tutti i documenti è meno interessante un esempio di key presenti in quasi tutit i documenti sono "il un la" ecc. (IDF)
      Tf
      IDF è in realtà una combinazione di due algoritmo moltiplicati tra di loro, scomponiamoli per un attimo per capire meglio la loro logica.

    • Term Frequency: il Tf esprime la frequenza in cui una key è presente all'interno del documento in esame, si calcola prendendo il numero delle volte che compare la key del documento dividendolo per il numero di tutti i termini contenuti nel documento.
      Tf= ni / T
      Dove Tf è la Term frequency, ni è il numero di volte che la keyword i compare, T è il totale dei termini contenuti.
      Attenzione, esiste anche il Term frequency normalizzato ma per ora non lo trattiamo.

    • Inverse Document Frequency: è simile al precedente ma calcola in quanti documenti è presente una data keyword e ne attribuisce un peso tanto maggiore quanto è meno diffusa la keyword. La formula è la seguente:
      IDF= Log(D/ndi)
      Dove D è il numero totale di documenti indicizzati, ndi è il numero dei documenti che contengono la keyword "i" presa in esame, il logaritmo viene usato vari motivi tra cui il seguente.
      Qualora il termine sia contenuto in tutti i documenti, con una semplice divisione si avrebbe un risultato di 1, ma se è contenuta in tutti i documenti non è per nulla significante, infatti facendo il logaritmo di 1 il risultato è 0. Cosa che dal punto di vista nostro è il risultato ottimale (non è significativa la key il suo peso è 0).

    CONCLUDENDO
    la formula per calcolare un peso w tramite l'algoritmo Tf*IDF è:
    w = ni / T * Log(D/ndi)

    Spero di essere stato abbastanza chiaro, postate qualsiasi domanda.


  • Super User

    Complimenti ! Sfornare un motore di ricerca il giorno dopo ferragosto è già di per se indice di una gran dedizione ! 😄

    ( 😞 Ora pero' non ho davvero piu' nessuna idea su cio' che accadrà fra 45 giorni! )

    Avrei delle domande da porvi, riguardo ad alcune specifiche problematiche pratiche:

    • Quanto pesano mediamente i siti indicizzati sul server? (in semplici termini di occupazione di spazio) ?

    • Quanto dura e quanto stressa il server la spiderizzazione dei documenti ?

    • Come pensate di programmare lo spider (sia su nuove pagine sia su doc già indicizzati) ?

    ...mi sono imbattuto in passato in questioni simili (utilizzando uno spider open source) realizzando un piccolo motore su un network limitato di siti..

    Grazie per le risposte e complimenti ancora,
    Nicola

    p.s. vedo che funzionano le freccette in visualizzazione dei risultati 😄


  • Super User

    Un terzo algoritmo, oppure sviluppando il secondo, si potrebbe studiare intorno agli studi di paocavo selezionando cluster di keyword nei testi delle pagine e assegnado a quelli un valore maggiore.

    Che ne dite?


  • Community Manager

    @nbriani said:

    Un terzo algoritmo, oppure sviluppando il secondo, si potrebbe studiare intorno agli studi di paocavo selezionando cluster di keyword nei testi delle pagine e assegnado a quelli un valore maggiore.

    Che ne dite?
    Per le altre domande arriva Tony, per questa rispondo io: aspettiamo 2-3 giorni....poi ne possiamo fare... 🙂


  • User Attivo

    @nbriani said:

    • Quanto pesano mediamente i siti indicizzati sul server? (in semplici termini di occupazione di spazio) ?
    • Quanto dura e quanto stressa il server la spiderizzazione dei documenti ?
    • Come pensate di programmare lo spider (sia su nuove pagine sia su doc già indicizzati) ?

    -Per ora indicizziamo singoli documenti che vengono messi in un db mysql, per il peso ti posso dire che per ora indicizzando 72 documenti il peso è di poco più di 2 mega, per ora non viene applicato nessun algoritmo di compressione, non so poi se mysql ne adotta uno suo per gestire queste informazioni.
    -La durata della spiderizzazione dei documenti varia in base alla lunghezza dei documenti anzalizzati, e va da pochi secondi ad un massimo di 15 - 20. Un esempio pratico, la home di http://admaiora.blogs.com/maurolupi/ pesa circa 116Kb viene indicizzata in circa 8 secondi. Questo tempo dipende anche dall' Hardware della macchina che non conosco.

    • Attualmente lo spider prende l'url se questo già è presente nel db lo aggiorna, altrimenti lo indicizza, e per ora è un processo manuale, parte quando gli viene fornito l'url del documento.
      Si può modificare il codice della pagina affinche legga da un file di testo o un database una lista di siti e li vada ad indicizzare. Inoltre si può far partire lo spider in modo programmatico (una sorta di schedulizzazione) affinche legga le pagine nel db che hanno una data più vecchia o uguale a 3 giorni fà e ci ritorni sopra per aggiornarle. Queste sono tutte idee ancora da realizzare ma si può fare di tutto, anzi se ne avete di nuove proponetele.

  • Bannato User Attivo

    Complimenti vivissimi allo staff dell"EMBRIONE" mi aggiungo alla discussione per rimanere aggiornato.

    Saluti e ancora complimenti!!!


  • User Attivo

    Volevo aggiungere qualche riflessione.

    • Una piccola riflessione sul secondo algoritmo, il Tf*IDF.
      Questo algoritmo, come già spiegato in precedenza, usa nella formula il parametro D, che è il numero dei documenti totali, quindi cosa succede:
      per ogni nuovo documento inserito questo valore D aumenta di 1 unità
      quindi per i precedenti documenti BISOGNA RIPETERE IL CALCOLO DEL PESO, inquanto uno dei parametri è cambiato.
      Come fare?
      Io penso che la soluzione ottimale sia far partire il ricalcolo come se fosse un aggiornamento ad esempio 1 volta a settimana.

    -Spam
    Questi due algoritmi sia quello dei pesi sempici sia quello Tf*IDF sono sucettibili al keyword spamming, ovvero tante più keyword sono presenti nella pagina tanto più alto sarà il loro peso, non è stata trattata per niente una alternativa che combatta lo spam, questo perchè siamo agli inizi e per ora è un test, quindi VI PREGO NON INDICIZZATA PAGINE CON SPAM.

    Saluti
    Tony.


  • User Attivo

    Il mootore ha dei problemi: guardate il 4 risultato
    http://www.giorgiotave.it/forum/mootore/search.php?q=ciao&btn=Cerca+con+Mootore&algo=1
    Ha dei problemi nel creare le descrizioni...

    Una considerazione OT:ma avete intenzione di fare paura a google e agli altri big? State sfornando roba una dopo l'altra (la directory, lo spider...)...
    Perchè se è così la questione si fa interessante ma sopratutto divertente!!;)

    P.S.: divertente non nel senso di idea patetica, ma nel senso sarà divertente vedere come tutti reagiranno, anche se per questo ci vorrà ancora tempo


  • Community Manager

    @HaccaH said:

    Il mootore ha dei problemi: guardate il 4 risultato
    http://www.giorgiotave.it/forum/mootore/search.php?q=ciao&btn=Cerca+con+Mootore&algo=1
    Ha dei problemi nel creare le descrizioni...
    Si...Antonio ci lavorerà più tardi 🙂

    Segnalate anche altre idee 🙂

    @HaccaH said:

    Una considerazione OT:ma avete intenzione di fare paura a google e agli altri big? State sfornando roba una dopo l'altra (la directory, lo spider...)...
    Perchè se è così la questione si fa interessante ma sopratutto divertente!!;)

    Hai colto molto, ma non siamo "scemi" di pensar di fare concorrenza a nessuno 🙂

    Vogliamo tre cose ed una l'hai presa: Divertirci, Studiare e Condividere 🙂

    GT 😉


  • User Attivo

    @Giorgiotave said:

    Hai colto molto, ma non siamo "scemi" di pensar di fare concorrenza a nessuno 🙂

    Vogliamo tre cose ed una l'hai presa: Divertirci, Studiare e Condividere 🙂

    Sicuro, ma sei poi viene fuori anche un bel progetto finalmente italiano, meglio no??


  • Moderatore

    :vai: :vai: :vai: :vai: :vai: :vai: :vai: :vai:

    e vvaiii!!

    ...non vi posso lasciare una giorno ....


  • User Attivo

    Io vorrei sapere una cosa molto più banale:
    si legge Mootore o Mutor(e)? 😄

    Complimenti ragazzi 😉


  • User Attivo

    Altra precisazione, ci sono di sicuro altri errori presenti nel mootore li correggerò un po alla volta tutti, un pò di tempo e pazienza.


  • Community Manager

    @HaccaH said:

    Sicuro, ma sei poi viene fuori anche un bel progetto finalmente italiano, meglio no??

    si si 😄

    Finalmente Italiano. Dateci tempo, il progetto GT viene da lontano ed andrà lontano.

    @Nicola said:

    Io vorrei sapere una cosa molto più banale:
    si legge Mootore o Mutor(e)? 😄

    Complimenti ragazzi 😉

    LOL Mootore 😄

    Ma è il nome dell'embrione 😉


  • Moderatore

    Grandiosi davvero... ma da un motociclista cosa volevate che uscisse se non un lavoro con i fiocchi?
    lamps...
    ste