algoritmo di impronta digitale dei contenuti

2

Ho un database contenente solo URL semplici. È semplice come sembra ora e l'URL può collegarsi a un sito Web oa un documento (ad esempio, qualsiasi cosa possa essere analizzabile in testo).

Ora ho un semplice codice che inserisce i record nel database. Il problema è che il sito web / documento potrebbe essere effettivamente lo stesso, solo:

  • Ospitato da qualche altra parte
  • Non disponibile così collegato da Google Cache
  • Non disponibile così collegato da archive.org
  • La pagina può essere ripubblicata da un'altra fonte
  • ecc ...

Mi piacerebbe ottenere una sorta di impronta digitale di un sito web / documento e pensare a un modo per farlo.

Quello che ho pensato:

Posso contare sul titolo

perché anche se il contenuto è pubblicato da qualche altra parte o messo in cache su qualche server, probabilmente avrà lo stesso titolo. Va bene, perché il titolo è solitamente breve e non consuma molto spazio. Lato negativo: funziona solo sul sito web. Forse un nome file è appropriato per i documenti ma anche questi possono essere rinominati.

Posso fare affidamento sul conteggio delle parole chiave

Ma il problema è che inserisco semplicemente URL e nessuna parola chiave né voglio farlo. È un semplice motore di archiviazione URL.

Posso ottenere una sorta di checksum di tutto il contenuto

Ma questo metodo sarebbe un'ipotesi totale.

QUINDI LA MIA DOMANDA È: Come posso impronte digitali di un contenuto, quindi in seguito potrei identificare possibili duplicati?

Modifica

Non voglio impronte digitali solo il titolo. Voglio impronte digitali dell'intero contenuto. Il contenuto rimane lo stesso, ma può essere ospitato ovunque e la sua struttura (anche il titolo) può cambiare. Per i documenti, anche il nome del file può cambiare. Voglio il contenuto delle impronte digitali. Tutto il testo in modo da poter identificare in seguito possibili duplicati.

    
posta lukas.pukenis 08.10.2013 - 15:25
fonte

1 risposta

3

La risposta dipende dalla precisione che desideri essere.

Titolo

Il titolo funzionerebbe con il 99% dei siti web e avresti il vantaggio aggiunto che è nella testa, nel senso che se il server lo supporta, potresti anche solo richiedere l'intestazione della pagina. Lo svantaggio sarebbe che, naturalmente, potresti avere lo stesso titolo ma pagine diverse.

Chiave

Controllare per parola chiave avrebbe lo svantaggio che due pagine simili possano condividere lo stesso conteggio delle parole chiave (prendere in considerazione la possibilità di trovare parole chiave nel menu e nessuna nel corpo principale - tutte le pagine con quel menu sono "uguali" per quanto riguarda il conteggio delle parole chiave). Considera anche che dovresti scaricare l'intera pagina per fare questo tipo di controllo, quindi non ha alcun vantaggio sul metodo del titolo.

Somma di controllo

Il checksum sarebbe di gran lunga il più accurato. Forse anche troppo preciso di quello che ti aspetti. Tutto ciò che serve è un timestamp generato dal server e hai una pagina diversa dalla precedente. Tuttavia, se questo è accettabile, allora non si può battere un checksum MD5. Sarebbe anche relativamente facile estrarre il checksum e salvarlo nel database.

Ha il vantaggio aggiunto che puoi eseguire checksum non solo sulla sorgente html ma anche sulle immagini e sui fogli di stile. È possibile eseguire un controllo "approfondito" su tutte le risorse della pagina una volta alla settimana e un controllo superficiale una volta al giorno sul codice HTML (occorreranno colonne separate nel database per ciascun tipo di controllo).

Conclusione

Di tutte queste soluzioni, probabilmente implementerei il checksum. Il mio database avrebbe ospitato due nuove colonne, una per un checksum MD5 e l'altra per la data di scadenza della pagina. Il checksum mi dice come sapere se la pagina è cambiata mentre la scadenza della pagina mi dice con quale frequenza dovrei controllarla, supponendo che sia disponibile.

Spero che questo aiuti e buona fortuna!

    
risposta data 08.10.2013 - 16:33
fonte

Leggi altre domande sui tag