我正在编写一个 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”。
我考虑过的三个选项是...
强制版主输入标准化的缩写或建筑物名称。对于日历版主来说,这可能是一个乏味的过程,所以我会尽可能避免这种情况。
进行粗略的子字符串搜索,检查输入的字符串是否包含在数据库字符串的任何位置。这是我的大学在他们的网站上所做的,但它显然不是很灵活。
实现一个更复杂的模糊字符串匹配算法,该算法提供最大的灵活性,但需要多一个数量级的时间来实现。如果已经存在正确的解决方案,那将是理想的解决方案!
这些选项中的哪一个(如果有的话)看起来最好?有没有我没想到的更好的选择?是否有一个库可以满足我的需要,但我还没有找到它?
提前感谢您的帮助!