使用php搜索数百万个字符串

时间:2011-12-09 15:48:26

标签: php string search

我有一个字符串,我需要使用php搜索,看看是否存在2-3百万条款。字符串可以是1000个字长,搜索字词最长可达5个字。

我尝试过strpos和strstr,但执行时间超过60秒。

有人可以提出替代方案吗?

到目前为止,我有以下内容:

    $query = "SELECT City FROM cities";

    $result = mysql_query($query);

    if ($row = mysql_fetch_array($result)) {
        do {

            $city = " " . $row['City'] . " ";

            if(strpos($string, $city)!== False) {
                echo $city . "<br />\n";
                }

        } while ($row = mysql_fetch_array($result));
    }

2 个答案:

答案 0 :(得分:1)

  

从PHP获取负载并提供给Mysql。

这里不是在循环中用PHP进行搜索,而是可以使用mysql LIKE函数来搜索字符串。

例如: SELECT 城市 FROM 城市 LIKE %搜索文字%

如果您有更多搜索文本,您可以使用OR开关或 JOIN sql查询来查找这些文本。

这会更快,你不需要60秒执行。

祝你好运

- Sajith

答案 1 :(得分:0)

我建议遵循:

  1. 使用关联数组创建两个查找表:单词和术语,因此每个条目应代表单个单词/术语
  2. 现在,您可以搜索内置复杂性O(1)
  3. 的查找表