Allora, piano piano... io sono un newbie di questa roba.

Il primo caso che mi hai illustrato mi sembra che non metta mano ai contenuti e punti a realizzare una mappa per similitudine (ma che cosa è, una specie di grafo?) solo sulla base degli url, per poi lasciare la decisione all'utente.

Come dici tu la cosa si adatta poco alla mia situazione. Da me se non si vanno a guardare i contenuti si rimane in alto mare, perché una variazione di un numeretto nella querystring (che tralaltro non è strettamente di tipo PHP) può essere molto più rilevante di un intero nome o codice di referrer che cambia... e poi non mi posso permettere di lasciare all'utente un compito particolarmente oneroso: l'utente deve trovarsi al massimo di fronte ad un messaggio che lo avvisa di un possibile (o quasi sicuro) inserimento duplicato e lo invita a verificare.

Veniamo a cosa mi proponi tu.
Tu dici di caricare il codice della pagina in una variabile, poi di usare striptags. Intanto strip_tags() devo dire che non funziona molto bene: se la uso sull'intero codice della pagina si becca un sacco di spazzatura (probabilmente per colpa di chi scrive le pagine, ma tant'è...), per questo prima di usarla nell'esempio ripulivo le pagine delle parti esterne al body.
Poi dovrei confrontare membro a membro la stringa risultante con quelle nel db, misurare la similarità con la funzione apposita e inventarmi una politica per individuare i possibili duplicati.

(Il tuo codice per adesso mi risulta comprensibile solo in parte: i costrutti del linguaggio non li conosco tutti così come le istruzioni per interagire con il db. Comunque mi sembra di aver capito che fai il confronto membro a membro, rapporti le similitudini alla lunghezza della stringa, ordini e tiri fuori il massimo.
Ok, bastava che me lo dicevi a parole... ...tanto appena mi addentro nello studio del linguaggio non avrò problemi a implementare quello di cui discutiamo qua )

Il problema è: ma con questo metodo devo salvarmi migliaia di pagine nel DB!? E poi devo chiamare la funzione similar-text() tante volte quante sono le pagine salvate... e infine devo stabilire una politica per decidere se queste vadano o meno mostrate all'utente come possibili duplicati, dato che non posso sempre disturbare l'utente mostrandogli le pagine più simili.

Premettendo che i duplicati che cerco io sono duplicati veri e propri e non pagine "simili", in cosa il metodo che proponevo era deficitario? :master: Alla fine usa meno spazio su DB, meno calcolo e ha già una sua politica definita.


Grazie per il tuo aiuto, e scusa la lunghezza.