Soundex ගැන සිංහලෙන්
ගොඩ කාලෙකින් බ්ලොග් පෝස්ට් එකක් නොලී නිසා මොනව හරි ලියන්න කියල හිතුන. අද මාතෘකාව Soundex (http://en.wikipedia.org/wiki/Soundex) කෙටියෙන් Soundex යන්න සිංහලෙන් පැහැදිලි කලොත් ඉංග්රීසියෙන් කියවන ආකාරයට වැනි නම් පිළිවෙලකට සැකසීමට භාවිතා කරන වාග්විෂයක/ශබ්දයන් පිළිබද ඇල්ගෝරිතමයකි (phonetic algorithm). මෙය සංවර්ධනය කර තිබෙන්නෙ Robert C. Russell සහ Margaret K. Odell විසින්.
මෙහි ප්රධාන කාර්යය නම් එක වගේ උච්චාරණය කරන නම් එක ලග තබා ගැනීමට අවෂය විදිහට තෝරාදීම. මෙය database application එකක පුද්ගලයන් සම්බන්ද කරගත හැකි තොරතුරු (contact information) සමග වැඩ කරන විට ප්රයෝජනවත්. එක විදිහට නමක් උච්චාරණය කලත් ලියන්න පුළුවන් විදි කිහිපයකට. නිදසුනක් ලෙස Smith හෝ Smythe එසේත් නැතිනම් Chapple, Chapel හෝ Chapelle වැනි වදන්, Soundex මගින් මේ වදන් වල වෙනස පහසුවෙන් හදුනාගන්න පුළුවන්. මෙය අකුරකින් සහ ඉලක්කම් තුනකින් යුතු අකුරු හා ඉලක්කම් (alphanumeric) 4 කින් යුතු කේතයකි. අනිවාර්යයෙන්ම පළමු අකුර නමේ මුල් අකුර වේ. ඒ වගේම එහි නීති රීති කිහියක් වේ.
Soundex හී නීති රීති (Rules)
- පළමුවැන් අකුර නමේ පළමු අකුර වේ
- ඉතිරි අකුරු 3 පහත ඇති අකුරට සමාන වන ඉලක්කම විය යුතුයි.
1 = B, F, P, V
2 = C, G, J, K, Q, S, X, Z
3 = D, T
4 = L
5 = M,N
6 = R
- ප්රාණාක්ෂර (vowels) A, E, I, O, U, Y හා H, W අකුරු නොසලකා හරියි.
- ඊලගට ඇති අකුර ත් එකම අකුර නම් එයද නොසලකා හරියි.
- එක අකුරක් සහ ඉලක්කම් 3ක් වනතුරු දිගටම අදාල ඉලක්ක්ම් සොයයි.
- ඉලක්කම් 3 ඉවර වෙන්න පෙර නම ඉවර වුනොත්, අගට අවෂය තරමට 0 යොදයි.
නිදසුන 1 : Robert – > R163
- - R මුල් අකුර වේ.
- - O නොසලකා හරී, ප්රාණාක්ෂරකි.
- - B හී Soundex කේතය 1 වේ.
- - E නොසලකා හරී, ප්රාණාක්ෂරකි.
- - R හී Soundex කේතය 6 වේ.
- - T හී Soundex කේතය 3 වේ.
නිදසුන 2 : Rubin – > R150
- R මුල් අකුර වේ.
- U නොසලකා හරී, ප්රාණාක්ෂරකි.
- B හී Soundex කේතය 1 වේ.
- I නොසලකා හරී, ප්රාණාක්ෂරකි.
- N හී Soundex කේතය 5 වේ.
- ඉතිරි ඉලක්කම වෙනුවට 0 යොදයි.
නිදසුන 3 : Allocation – > A423 (නමක් නොවේ එකම අකුරක් දෙපාරක් තියෙන විට හැසිරෙන ආකාරය පෙන්නුම් කිරීමට ගත් නිදසුනකි)
- A මුල් අකුර වේ.
- L හී Soundex කේතය 4 වේ.
- L කලින් අකුර L නිසා මෙයද නොසලකා හී
- O නොසලකා හරී, ප්රාණාක්ෂරකි.
- C හී Soundex කේතය 2 වේ.
- A නොසලකා හරී, ප්රාණාක්ෂරකි.
- T හී Soundex කේතය 3 වේ.
- වචනයේ ඉතිරි අකුරු නොසලකා හරී
Soundex සම්බන්ධව Microsoft SQL server තුල SOUNDEX () සහ DIFFERENCE () යන function භාවිතා කරන්න පුළුවන්.
SQL Server සමග භාවිතය, මම AdventureWorks database එක අදාල නිදසුන් සඳහා භාවිතා කරනව.
SOUNDEX () function එක භාවිතා කිරීම
SELECT SOUNDEX('Chapple') AS 'Chapple',
SOUNDEX('Chapel') AS 'Chapel',
SOUNDEX('Chapelle') AS 'Chapelle'
GO
නිදසුන 1 : Aidan යන නාමයට සමාන උච්චාරණයක් ඇති නම් ගැනීමට අවෂය නම්, (කවුරුන්ගෙන් හෝ නමක් අසා දත්ත සමුදායේ ඇති නම් සොයන්න අවෂය වූ විට)
USE AdventureWorks
GO
SELECT DISTINCT FirstName--,LastName
FROM Person.Contact
WHERE SOUNDEX('Aidan') = SOUNDEX(FirstName)
GO
DIFFERENCE () function එක භාවිතා කිරීම
SELECT DIFFERENCE('Smith', 'Smythe') AS 'DIFFERENCE'
GO
මෙමගින් Strings දෙකක ඇති Soundex හී වෙනස ලබා දේ. එමගින් ලබාදෙන වෙනස 0 ත් 4 ත් අගය අතර ගන්නා අතර 4 යනු වචන දෙකෙහි නියමාකාරයෙන් ගැලපෙන බවයි.
USE AdventureWorks GO SELECT DISTINCT FirstName,DIFFERENCE(FirstName,'Aidan') AS 'DIFFERENCE'--,LastName FROM Person.Contact WHERE FirstName LIKE 'A%' ORDER BY DIFFERENCE(FirstName,'Aidan') DESC GO
DIFFERENCE () ප්රධාන වශයෙන්ම අවෂය වනුයේ යම් පදයක් භාවිතා කර සෙවීමේදී පළමු අකුරට වඩා ගැලපෙන වචන සෙවීමේදීය. මතක තියාගත යුතු කරුණ නම් මෙය LIKE වෙනුවට භාවිතා කල හැකි දෙයක් නොව් යන්නයි.







3 Comments on “Soundex ගැන සිංහලෙන්”
ස්තූතියි.. මේ පිළිබඳ දැන සිටියේ නෑ. මේ දිනවල කරන project එකට මේක ඉතා වැදගත්.!
එල… නියමයි
මරැනේ. අද තමයි මේක දැනගත්තෙ.