2017-03-12 1 views
-1

Ich habe ein Startprojekt und es geht um Dateien. Ich habe versucht, einen Algorithmus zu erstellen, aber ich konnte nicht. Ich möchte einen Algorithmus zusammen mit einer Datenbank für diese Zwecke erstellenVergleichen Sie eine Datei mit anderen Dateien, um herauszufinden, ob sie schon existiert oder nicht?

Ich habe viele Dateien in meiner Datenbank (Datei oder eine Beziehung zu Datei ist egal) und wenn eine andere Datei kommt, möchte ich diese Datei mit allen vergleichen Meine Dateien und wenn es mehr als zum Beispiel 80% Ähnlichkeit hat, lasse ich das nicht in meiner Datenbank anders mit dieser Bedingung speichern, dass es weniger als 80% Ähnlichkeit mit allen Dateien hat, die ich in meiner Datenbank speichern möchte.

+0

Ähnlichkeit definieren: Bytefolgen, Wörter? Dateitypen unterstützen? ohne Code ist dies hier nicht möglich. – dlatikay

+0

@dlatikay lieber Freund i Problem mit einer Datei mit vielen vergleicht es braucht Zeit meine Dateien bleiben nicht Typ Datei ich will in allen Dateitypen aus, sondern speziell pdf und docx –

+0

Sie könnten wollen, betrachten [ nahe Dublettenerkennung] (http://stackoverflow.com/a/23053827/572670), scheint gut für Sie zu passen. – amit

Antwort

0

Sie sollten 3 Variablen speichern, Similarity, Size1 und Size2 (alle initialisiert als 0).

Zuerst fangen Sie an char von char (oder Stück für Stück oder was auch immer Sie brauchen) aus den Dateien zu vergleichen, und wenn Sie ein Zeichen lesen, wenn ihre Zeichen gleich sind, erhöhen Sie 1 in Ähnlichkeit. Nach jedem char Vergleich, erhöhen Sie 1 in Size1 und Size2.

Sie sollten diese Vergleiche ausführen, bis eine der Dateien vorbei ist, dann zählen Sie nur die Zeichen, die in der größeren Datei verblieben sind, und erhöhen Sie in Size1 oder Size2.

Dann teilen Sie Ähnlichkeit durch die Größe der Datei in Ihrer Datenbank (sei es Size1 oder Size2) und sehen, ob es 80% oder mehr ähnlich der neuen ist.

hoffe das hilft :)

+0

danke mein Freund für deine Antwort aber es funktioniert nur für 2 Datei und wenn ich es im Vergleich eine Datei mit vielen Dateien (eigentlich viele Dateien mit vielen Dateien) es ausführen will dauert zu viel Zeit aber immer noch danke für Ihre Antwort ;-) –

+0

gut, Sie können die Datei, die Sie überprüfen möchten, und vergleichen Sie es mit allen anderen (Sie können Optimierungen, zum Beispiel, wenn Sie 10 Zeichen vergleichen und sie sind alle anders, überspringst du diesen Vergleich) – Daniel

+0

Du hast recht aber vielleicht steckt man einfach ein Zeichen (Byte) in zB eine PDF-Datei und ladet es hoch. Wenn es zwischen diesem Bereich von Byte war, das ich es prüfend, ist Problem –

Verwandte Themen