0

sqlite 中的 soundex 函数是否对字符串长度有限制?正如我发现的结果

SELECT soundex('Schneider Thomson'), soundex('Schneider Rene'), soundex('Schneider')

都是相同的值,等于 S536,但是结果:

SELECT soundex('Schn Thomson'), soundex('Schn Rene'), soundex('Schn');

每个字符串都不同,值是

soundex('Schn Thomson') = S535 
soundex('Schn Rene')    = S565
soundex('Schn')         = S500

请任何人解释为什么?

4

2 回答 2

1

Soundex算法旨在处理单个单词。(为简化起见,它对第一个字母和后面的前三个辅音进行编码。)

于 2013-06-19T09:08:16.203 回答
1

为了更清楚地说明 CL 的答案,编码使用第一个字母,然后对以下辅音(H、W、Y 除外)进行编码,直到生成 3 位数字。密西西比这个词很好地说明了这一点。密西西比州的 SOUNDEX 为 M210。

  1. M 是第一个字母后跟第一个辅音 S。然后 S 被重复并被 SO​​UNDEX 编码忽略。
  2. 下一个辅音是 P,它后面没有另一个有效字母(只是一个重复的 p 和一个 i)。
  3. 因此,零是最后一个数字。

希望这可以进一步说明 SOUNDEX 如何编码单词。有关更多信息,Genealogy.comSOUNDEX的这篇文章解释了在研究名称时如何使用。这可以解释为什么 supercell 和 supercalifragilisticexpialidocious 具有相同的 SOUNDEX,S162。

于 2015-07-24T15:51:36.013 回答