最近在项目中遇到了模糊匹配字符串的需求,记录一下思路。
大致的需求:
系统中存在一批医院数据,需要筛选出其中重复的数据。
分析:第一时间想到的是可以直接通过Sql 对关键字段进行分组 ,查找数据
SELECT * FROM NAME IN (
SELECT NAME
FROM hospital
GROUP BY name
HAVING COUNT(1)>1
)
然该方式只能查找出完全一致的数据,系统中存更多的是名称并不完全一致的重复数据
如:左权康复医院、左权县康复医院
这种情况可以根据需求剔除特定关键字后再做匹配
string[] deletestrlist = new string[] { "省", "市", "自治区", "旗", "县", "自治州", "区", "镇", "自治县" };
/// <summary>
/// 去除冗余信息
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string DeleteRedundances(string str)
{
foreach (var redundance in this.deletestrlist)
{
if(str.Contains(redund