Μονάδα Λειτουργίας SOUNDEX

Η Μονάδα Λειτουργίας SOUNDEX υπολογίζει την ομοιότητα των ήχων μιας αλυσίδας χαρακτήρων.

Οι τιμές Soundex έχουν την ιδιότητα ότι οι παρόμοιες προφέρσεις λέξεων παράγουν την ίδια τιμή Soundex. Αυτό μπορεί να χρησιμοποιηθεί για αναζήτηση σε βάσεις δεδομένων, όταν γνωρίζετε τη φωνητική αλλά όχι την ακριβή ορθογραφία. Η συνάρτηση Soundex επιστρέφει μια αλυσίδα χαρακτήρων τεσσάρων χαρακτήρων, ξεκινώντας από ένα γράμμα.

Είσοδος STR

Η είσοδος ορίζει την αλυσίδα χαρακτήρων που πρέπει να υπολογιστεί.

Έξοδος

Επιστρέφει μια αλυσίδα χαρακτήρων με τον κωδικό Soundex.

Βασικές Κανόνες

Κάθε κώδικας Soundex αποτελείται από ένα γράμμα ακολουθούμενο από τρεις αριθμούς, π.χ. A532 για Antcas. Αν η λέξη που πρέπει να κωδικοποιηθεί έχει τόσο πολλά γράμματα ώστε να μπορούν να παράγονται περισσότεροι αριθμοί, διακόπτεται μετά τον τρίτο αριθμό. Αν η λέξη έχει λίγα γράμματα, συμπληρώνονται οι τελευταίοι αριθμοί με μηδενικά. Έτσι ο ασιατικός όνομα Lee κωδικοποιείται ως L000.

Αριθμός Παραστατούμενα Γράμματα
1 B, F, P, V
2 C, G, J, K, Q, S, X, Z
3 D, T
4 L
5 M, N
6 R

Οι φωνήεντα A, E, I, O και U και οι σύμφωνα H, W και Y πρέπει να αγνοούνται εκτός από το πρώτο γράμμα. Επιπλέον για τη γερμανική γλώσσα μπορεί να οριστεί: τα δίψηφα Ä, Ö και Ü πρέπει να αγνοούνται, το "σκληρό S" ß κωδικοποιείται όπως το απλό S.

Αν πολλά γράμματα που ακολουθούν το ένα το άλλο στην αρχική αλυσίδα χαρακτήρων έχουν τον ίδιο κώδικα Soundex, εμφανίζεται αυτός μόνο μία φορά στο αποτέλεσμα, από abfx γίνεται λοιπόν A120 (a παραμένει, επειδή είναι το πρώτο γράμμα, b και f δίνουν τον ίδιο κώδικα 1, x δίνει 2, στο τέλος προστίθεται ένα μηδέν για να πάρουμε τέσσερα γράμματα).

Στην πρακτική εφαρμογή της μεθόδου Soundex, επικρίνονται κυρίως δύο σημεία: από την μία πλευρά είναι πολύ προσαρμοσμένη στην αγγλική γλώσσα και από την άλλη προσφέρει μόνο μια πολύ γενική ανάλυση.

Ωστόσο, πρέπει να σημειωθεί ότι ο παρουσιαζόμενος αλγόριθμος είναι πιθανώς ο πιο συχνά χρησιμοποιούμενος για τη φωνητική αναζήτηση. Αυτό έχει βοηθήσει σίγουρα το γεγονός ότι για την βάση δεδομένων Oracle είχε υλοποιηθεί πολύ νωρίς μια αντίστοιχη εντολή PL/SQL πρότυπου.