2

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

日历管理员可以在“位置”字段中输入几项内容:

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

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

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

我尝试过使用LIKE '%FOO%'和类似的模式,以及 Levenshtein Distance,但我遇到了一些问题,例如,如果实际的建筑物名称是“Example Foo and Bar Building”,而主持人输入的位置是“Example Bar Building”。

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

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

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

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

这些选项中的哪一个(如果有的话)看起来最好?有没有我没想到的更好的选择?是否有一个库可以满足我的需要,但我还没有找到它?

提前感谢您的帮助!

4

0 回答 0