这里是任务。我需要识别一个字符串是否包含某个城镇的名称。 换句话说 - 从一些文本中识别一个城镇。
我有一个需要搜索的文本输入和地理编码。 根据地理编码,从数据库中加载城镇列表。
现在,当前实现方式是我循环遍历这些城镇的列表,并尝试使用短路评估进行匹配。 就像这样:
if (stripos($text, $currentTown) !== false &&
preg_match("#\b$currentTown\b#i", $text)) {
// add town to recognized list
}
问题是我有一个英国城镇列表(约40,000个),循环需要花费相当长的时间。
所以我的问题是如何优化识别时间。也许数组中有一些高级搜索方法?
欢迎任何想法。
谢谢。