【发布时间】:2012-08-15 19:29:53
【问题描述】:
这是任务。 我需要识别一个字符串是否包含某个城镇名称。 另一个词 - 从一些文本中识别一个城镇。
作为输入,我有要搜索 AND 地理编码的文本。 根据地理编码从数据库加载城镇列表。
现在,当前的实现是遍历这些城镇的列表,并尝试使用短路评估来匹配它。 喜欢:
if (stripos($text, $currentTown) !== false &&
preg_match("#\b$currentTown\b#i", $text)) {
// add town to recognized list
}
问题是我有例如英国的城镇列表(大约 40 000 个)循环将花费“相当长的时间”。
所以我的问题是如何优化识别时间。 也许数组中有一些高级搜索?
欢迎提出任何想法。
谢谢。
【问题讨论】:
-
这类似于DNA序列搜索问题。
-
解决办法是什么?
-
不会 sql LIKE 比你的 php sn-p 快吗?
-
您可能会想,包含 40,000 个元素的数组可能不是最好的方法。我赞同使用数据库或服务解决方案的建议
-
老实说我还没有考虑过这个解决方案。我将不得不彻底。需要使用 rlike 而不是 like 来匹配单词边界之间的城镇名称
标签: php arrays optimization