Ich habe nun die ersten Tests gemacht. Das Datenmodell habe ich (noch) nicht geändert, bis dato habe ich aber auch keine Performanceprobleme. Zum Vorgehen:
Ich iteretiere über die Beschreibungsfelder und wandle sie in einen Soundex-Begriff bzw. einen Metaphone-Begriff um. Anschließend verwende ich die Levenshtein-Metrik für den Vergleich. Im Code sieht das so aus:
Difference := Levenshtein(Soundex(SearchString), Soundex(i-te Beschreibung)) * 100;
oder
Difference := Levenshtein(Metaphone(SearchString), Metaphone(i-te Beschreibung)) * 100;
In Difference (Double) habe ich nun eine Art Qualitätsschwellenwert für die Gleichheit der Begriffe (z.B. Ein Wert von 58 bedeutet 58% Übereinstimmung)
Aber ehrlich gesagt, kann ich die Ergebnisse nicht so richtig einordnen. Manchmal habe ich den Eindruck, dass einmal Soundex, einmal Metaphone "besser" ist.
Stepha
Ich iteretiere über die Beschreibungsfelder und wandle sie in einen Soundex-Begriff bzw. einen Metaphone-Begriff um. Anschließend verwende ich die Levenshtein-Metrik für den Vergleich. Im Code sieht das so aus:
Difference := Levenshtein(Soundex(SearchString), Soundex(i-te Beschreibung)) * 100;
oder
Difference := Levenshtein(Metaphone(SearchString), Metaphone(i-te Beschreibung)) * 100;
In Difference (Double) habe ich nun eine Art Qualitätsschwellenwert für die Gleichheit der Begriffe (z.B. Ein Wert von 58 bedeutet 58% Übereinstimmung)
Aber ehrlich gesagt, kann ich die Ergebnisse nicht so richtig einordnen. Manchmal habe ich den Eindruck, dass einmal Soundex, einmal Metaphone "besser" ist.
Stepha
Comment