请教我现在要做一个地名匹配的工具
现在我已经将"北京市长安街1002号"用逆向最大匹配法解析成
北京市/长安街/1002号现在我将根据这个分词算法分出的字符串 来匹配我的地名库如果我的地名库里有只有1003号 怎么将地图定位到1003号呢?
现在我已经将"北京市长安街1002号"用逆向最大匹配法解析成
北京市/长安街/1002号现在我将根据这个分词算法分出的字符串 来匹配我的地名库如果我的地名库里有只有1003号 怎么将地图定位到1003号呢?
解决方案 »
- 帮忙关于google map api key~~大侠们帮帮忙~感激不尽呀~
- 根据主表中从表的ID,在主表中显示从表除ID之外的信息
- 关于windows服务!!大家都来看看啊.顶者给分~~~~~~~~
- C# 修改Win7 注册表如何获取权限
- 贴段代码,自已简单的重新封装了一个控件,请大家帮忙看看,指点一下
- vs2005+sql server2000连接超时
- SQL Server不存在或拒绝被访问
- 请问在c#里,如果将字符从unicode转成gb2312 ??????
- 求教:哪里有ARJ的压缩和解压缩的C#算法啊。
- WPF里XAML的这一句代码用后台code代码怎么表示?
- 求VBA高手!现金结算报酬
- 析构函数与IDisposable
能不能换个逻辑... xxx号作为 int 变量, 先匹配长安街 再匹配 xxx号 比如 你搜索1002号 但目前你的库里最近的只有 1003 和1009 那么你就选1003作为 展示给用户的最近匹配点呗
例如 长安街 和 1002号然后用函数提炼后一个1002号的数字,函数如下(可能有误,暂时没有找到别的好办法)
/// <summary>
/// 获取字符串中的数字
/// </summary>
/// <param name="str">字符串 </param>
/// <returns>数字 </returns>
public static decimal GetNumber(string str)
{
decimal result = 0;
if (str != null && str != string.Empty)
{
// 正则表达式剔除非数字字符(不包含小数点.)
str = Regex.Replace(str, @"[^\d.\d]", ""); // 如果是数字,则转换为decimal类型
if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))
{
result = decimal.Parse(str);
}
}
return result;
}
找到 关键词包含“长安街”的地名记录,同样的,用这个函数在记录提取数字(可能要根据后缀来判断数字)
然后根据 数字之差的绝对值来判断记录。大概思路是这样,你需要做的就是完善自己的算法~避免提取数字的时候的错误。