iOS中的复杂模糊字符串匹配

时间:2012-08-15 03:27:48

标签: ios regex string sqlite search

我正在编写一个iOS应用程序,用于从公共Google日历中提取事件,拉出自由格式的“位置”字段,并在与给定位置对应的地图上放置图钉。我想使用某种字符串搜索或模糊匹配算法使应用程序尽可能灵活,但我不知道从哪里开始。

日历主持人可以在“位置”字段中输入以下内容:

  • 建筑物名称和房间号码(例如Foo Hall Room 123)
  • 建筑物缩写和房间号(例如FOO 123)
  • 简写房间或位置名称(例如Foo)

目前,我有一个由一个表组成的sqlite数据库,每一行存储一个纬度,经度,完整的建筑名称(Foo Hall)和标准化建筑缩写(FOO)。

我想获取主持人的自由格式字符串并从数据库中获取正确的坐标(如果存在)。

我尝试过使用LIKE '%FOO%'和类似的模式,以及Levenshtein Distance,但我遇到了问题,例如,如果实际的建筑物名称是“示例Foo和酒吧建筑”,并且主持人输入的位置是“示例酒吧建设”。

我考虑过的三个选项是......

  • 强制主持人输入标准化的缩写或建筑物名称。对于日历主持人来说,这可能是一个繁琐的过程,所以我尽量避免这种情况。

  • 执行粗略的子字符串搜索,检查输入的字符串是否包含在数据库字符串中的任何位置。这就是我的大学在他们的网站上所做的,但显然不是很灵活。

  • 实现更复杂的模糊字符串匹配算法,该算法可提供最大的灵活性,但需要花费一个数量级的时间来实现。如果正确的那个已经存在,那将是理想的解决方案!!

哪些选项(如果有的话)似乎最好?有没有更好的选择,我没有想到?是否有一个图书馆可以满足我的需求而我还没有找到它?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:-2)

我不是iOS开发人员,所以我无法提供太多帮助,但如果你必须实现自己的解决方案,那么你可以使用几个多功能的Python库,例如fuzzywuzzy 。祝你好运!