【转】http://www.syyong.com/Go/Go-implements-the-soundex-algorithm.html

SOUNDEX 返回由四个字符组成的代码 (SOUNDEX) 以评估两个字符串的相似性。

Soundex("Euler")       == Soundex("Ellery");    // E460
Soundex("Gauss")       == Soundex("Ghosh");     // G200
Soundex("Hilbert")     == Soundex("Heilbronn"); // H416
soundex("Knuth")       == Soundex("Kant");      // K530
Soundex("Lloyd")       == Soundex("Ladd");      // L300
Soundex("Lukasiewicz") == Soundex("Lissajous"); // L222

Soundex

// soundex()
// Calculate the soundex key of a string.
func Soundex(str string) string {if str == "" {panic("str: cannot be an empty string")}table := [26]rune{0, '1', '2', '3',           // A, B, C, D0, '1', '2',                // E, F, G0,                          // H0, '2', '2', '4', '5', '5', // I, J, K, L, M, N0, '1', '2', '6', '2', '3', // O, P, Q, R, S, T0, '1',                     // U, V0, '2',                     // W, X0, '2',                     // Y, Z
    }last, code, small := -1, 0, 0sd := make([]rune, 4)// build soundex stringfor i := 0; i < len(str) && small < 4; i++ {// ToUpperif str[i] < '\u007F' && 'a' <= str[i] && str[i] <= 'z' {code = int(str[i] - 'a' + 'A')} else {code = int(str[i])}if code >= 'A' && code <= 'Z' {if small == 0 {sd[small] = rune(code)small++last = int(table[code-'A'])} else {code = int(table[code-'A'])if code != last {if code != 0 {sd[small] = rune(code)small++}last = code}}}}// pad with "0"for small < 4 {sd[small] = '0'small++}return string(sd)
}

Github地址

https://github.com/syyongx/php2go

转载于:https://www.cnblogs.com/syyong/p/8941039.html

Go 实现 soundex 算法相关推荐

  1. soundex 算法

    SOUNDEX 返回由四个字符组成的代码 (SOUNDEX) 以评估两个字符串的相似性.返回的第一个字符是输入字符串的第一个字符,返回的第二个字符到第四个字符是数字. soundex 代码如下: de ...

  2. Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面...

    Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面 1. 常用算法1 1.1. 目录2 1.2. 定义和用法编辑2 1.3 ...

  3. 算法与数据结构学习资料及面试

    from 算法之美作者:  http://blog.csdn.net/tiandijun/article/details/50550056 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录( ...

  4. Python实现音标代码算法

    Python实现音标代码算法 Soundex是一种基于英文单词的发音,将单词转换为编码字符串的算法.使用该算法将相似的单词编码为相同的字符串,这对于文本匹配和搜索非常有用.本篇文章将介绍如何使用Pyt ...

  5. 《introduction to information retrieval》信息检索学习笔记3 词典和容错式检索

    第3章 词典和容错式检索 3.1 用于词典的搜索结构 给定一个反向索引和一个查询,我们的第一个任务是确定每个查询词是否存在于词汇表中,如果是,则返回指向相应倒排记录表的指针.涉及在数据结构中定位词项. ...

  6. 自然语言处理中的N-Gram模型

    N-Gram(有时也称为N元模型)是自然语言处理中一个非常重要的概念,通常在NLP中,人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理.另外一方面,N-Gram的另外一个作用是 ...

  7. 《信息检索导论》第三章总结

    一.Hash Table和Search Tree 实现dictionary的方法主要有哈希表和搜索树(二叉树.B树.AVL树): 实现哈希表的dictionary的优点: (1)查询效率O(1): 缺 ...

  8. ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误

    ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误 摘要 我们喜欢在对结构化数据(如:日期和价格)做查询时,结果只返回那些能精确匹配的文档.但是,好的全文搜索不应该有这样的限制 ...

  9. MySQL函数和操作符(超详细,备着查找)

    一.操作符 1.1 操作符优先级 以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符具有相同的优先级. 操作符 优先级 := 1 ||, OR, XOR 2 &&, AN ...

最新文章

  1. Mac搭建Git服务器—开启SSH
  2. struts2 s标签
  3. windows下PXE+TFTP+HTTP自动安装ubuntu server
  4. ERP、CRM、SCM三大系统整合是发展的必然趋势
  5. learn go anonymous function
  6. python中的dict是什么数据类型_Python数据类型之字典(dict)
  7. python库skimage 图像直方图局部均衡化
  8. ROS机器人操作系统——ROS介绍
  9. HNOI2015解题报告
  10. ubuntu20.04 虚拟机连不上网
  11. 研电赛项目之双目测距,涉及matlab相机标定,opencv多线程编程,摄像头读取,行人检测、BM立体匹配等等
  12. animejs走马灯_web前端攻城狮超爱的JS动画库插件—anime.js
  13. 我的奋斗之黑马第一天
  14. 智慧星杀毒软件:炒作?黑幕?其它?
  15. ocdma相干非相干_相干成像与非相干成像系统的比较
  16. linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理
  17. 团队梯队人才培养模型,60页人才梯队建设与人才培养
  18. 又撸一年的代码!尽管我秃头还白发,我还是坚持了
  19. Java聊天表情包emoji保存到Mysql数据库
  20. java springboot oracle备份 exp expdb

热门文章

  1. oracle进入rman报错,Oracle学习系列之Rman学习(三)
  2. 请问学习前端最有效的办法是什么?
  3. 如何在一年内从零基础到前端就业?
  4. 顺序图中页面、窗口等为什么当做类处理?
  5. 原有磁盘上创建lvm_Centos7创建LVM磁盘管理
  6. linux mysql导出乱码问题_[MYSQL]将数据从5.0版本导入到4.1.7版本中出现乱码问题解决方案...
  7. delphi对比易语言_delphi 2007 vs E语言 vs C#运行速度 - Delphi编程
  8. C语言学习笔记---随机数rand()函数
  9. STM32F1xx系列单片机通过程序获取MCU信息
  10. Java程序莫名其妙卡死的一次经历