Recentemente ho sono imbattuto in questa domanda intervista:in tempo reale il monitoraggio delle prime 100 parole di Twitter al minuto/ora/giorno
Given a continuous twitter feed, design an algorithm to return the 100 most
frequent words used at this minute, this hour and this day.
Stavo pensando di un sistema con una mappa hash di word -> count
legata a 3 min-cumuli per il minuto, ora e giorno corrente.
Ogni messaggio in entrata è tokenized, sterilizzate e le parola conta aggiornati nella mappa di hash (e aumentare-chiave nei cumuli se la parola esiste già in esso)
Se una delle parole non esistono in l'heap (e la dimensione dell'heap == 100) controllano se il loro frequency > min value
nell'heap e se è così estrarre-min e inserirlo nell'heap.
Ci sono modi migliori per farlo?
Grazie dasblinkenlight ha senso. Speravo di non tenere traccia delle parole per ogni minuto. in un'ora qualcosa come unire i conteggi per il minuto corrente. nell'ora e riutilizzando la stessa mappa per il prossimo minuto.Ma questo non aiuterebbe a mantenere le 100 parole più alte nell'ultima ora, poiché perdiamo dati sui vecchi minuti – barefootshoes
@barefootshoes hai assolutamente ragione: questo problema è in qualche modo simile a disegnare un serpente in esecuzione in un videogioco: anche se ogni passaggio cambia solo due punti (la testa e la coda), è ancora necessario mantenere le posizioni dell'intero corpo del serpente. – dasblinkenlight