// Refined Soundex - 多变体增强型语音编码
比标准 Soundex 算法具有更高的匹配精度。
支持 Refined、Apache 与 SQL Server 三种实现。
智能分组发音相近的辅音,减少误差。
Refined Soundex 在经典 Soundex 算法基础上,引入更精细的字符映射以更好地捕捉语音相似性。算法保留首字母,并将后续辅音根据发音特征映射到数字分组。它提供三种变体:标准 Refined 版本、Apache Commons 实现以及兼容 SQL Server SOUNDEX 函数的版本。
Encoding process:
1. Keep first letter
2. Map consonants to digits
3. Remove duplicates
4. Pad with zeros to length
Refined mappings:
B,P � 1
F,V � 2
C,K,S � 3
G,J � 4
Q,X,Z � 5
D,T � 6
L � 7
M,N � 8
R � 9
Examples:
THOMPSON � T81938
T-H[0]-O-M[8]-P[1]-S[9]-O-N[3][8]
JACKSON � J23938
J-A-C[2]-K[3]-S[9]-O-N[3][8]
Apache variant:
Additional mappings for W,Y
SQL variant:
Original Soundex mappings
Refined Soundex 是在原始 Soundex 算法基础上改进的版本,可以更精确地对姓名进行语音编码。它使用更加细致的辅音映射,更贴近实际发音。
Refined Soundex 使用更多数字组(0–9 而不是 0–6),并采用更复杂的辅音映射。例如,它将 M 和 N 分配到不同的代码,并区分比原算法更多的辅音音素。
如果需要最佳准确度,建议使用标准 Refined 变体。需要兼容 Apache Commons Codec 库时,可以选择 Apache 变体;如果要与 SQL Server 的 SOUNDEX 函数进行匹配,则应使用 SQL Server 变体。
Refined Soundex 通常对英文姓名效果更好,尤其是在发音差异较为细微的情况下。对于非英文姓名或特殊场景,Double Metaphone 或 Daitch-Mokotoff 等算法可能更适合。