Ich mag die Saiten passen und eine Punktzahl in der folgenden Art und Weise zu erhalten,Bestellen sequenzieller Text passend
string 1: 4556677, string 2: 2556677, score: 0
string 1: 123345873009, string 2: 123345873112, score: 9
string 1: 22334567, string 2: 22334500, score: 6
So ist die Punktzahl ist gemeinsame erste n Ziffern, von links nach rechts.
Ich habe eine Liste von 100K String 1 und 30M String 2, ich möchte alle Paare (String 1 und 2) mit einem Ergebnis größer als 'x' filtern.
Gibt es einen Algorithmus, der diese Aufgabe anstelle der sequenziellen Suche nach brutaler Kraft erfüllt? Ich habe Tabellen in Apache Hive/HBase gespeichert und möchte den Ansatz entweder in Spark oder Java MapReduce implementieren. Jede Hilfe wird sehr geschätzt.
Schätzen Sie Ihre Sich Zeit nehmen, zu diesem Thema. Aber dies ist ein Brute-Force-Eins-zu-Eins-Vergleich, dies würde die Anzahl der zu prüfenden Paare als "100k * 30M" machen, was nicht effizient ist, selbst wenn die Paare eliminiert werden, die nicht die gleiche erste Ziffer haben. Ich muss wissen, ob es eine Datenstruktur (baumähnlich) gibt, die eine schnelle Implementierung dieses Abgleichs ermöglicht. – Mike