php - MySQL 精确 URL 搜索

标签 php mysql url

因此,我尝试合并两个公司信息数据库(从现在起表 A 和表 B),其中最常见(且可靠)的单一引用点是网站 URL。表 A 已更新,表 B 待更新。

我已经从表 A 中提取了 URL,并使用 PHP 清理了它们(大约 6000 个 URL),计划是根据找到的 URL(但不是 URL 本身)查找并更新表 B 中的一些信息。

在表 A 中,URL 均为 domain.comwww.domain.comwww.subdomain.domain.com,不含http://或任何尾随的/或其他 URL 数据。在表 B 中,它们是原始 URL,可能包含任何额外信息,例如 http://等。

现在我尝试通过表 B 中的 URL 搜索该公司,如下所示:

SELECT * FROM companies WHERE website LIKE '%$url1%' OR website LIKE '%$url2%'...

虽然这有效,但它也会提取出不正确的信息。例如,我在表 A 的列表中没有 bt.com (或任何变体),但它在表 B 中与之匹配(有一个 www.corporate .bt.com 在表 A 中,我认为它是匹配的)。

那么,我该如何阻止这种情况发生呢?很明显在 URL 列表中找到了类似的东西,但我只想匹配确切的字符串。因此,在上面的示例中,如果我正在搜索 www.corporate.bt.com,则只有在字符串 (http://www.corporate.bt.com) 中找到它时才应返回该内容。 bt.com/ 可以,http://bt.com/ 不行)

此外,对于这么大的数据集执行此操作的最佳方法是什么?表 A 有大约 6,000 个 URL,表 B 有 14,000 个(并非所有表 A 都会在表 B 中)。

最佳答案

LIKE 不会返回精确搜索,但您可以使用 MySql REGEXP 进行精确搜索,它将在搜索字段中找到精确结果并仅返回精确网址

SELECT * FROM companies WHERE website REGEXP '[[:<:]]$url1[[:>:]]' OR 
                              website REGEXP '[[:<:]]$url2[[:>:]]'

或者,如果提交的文件只有一个 url,那么您可以使用 = 运算符

SELECT * FROM companies WHERE website = '$url1' OR website = '$url2'

更新 在此,您可以扩展 REGEX 搜索并仅输入 SERVER_NAME,例如 domain.comdomain1.comabc.domain.com,请参阅下面的查询

$url = "doamin.com";
$url1 = "domain1.com";
SELECT * FROM companies WHERE 
    website REGEXP '^(htt(p|ps):\/\/|htt(p|ps):\/\/www\.)($url)$' OR 
    website REGEXP '^(htt(p|ps):\/\/|htt(p|ps):\/\/www\.)($url1)$'

关于php - MySQL 精确 URL 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818075/

相关文章:

php - PHP 函数 session_module_name 到底是做什么用的?

javascript - 我可以使用我的 jQuery AJAX post 方法数据键连接到我的 php 文件吗?

php - 使用php将while循环中的数据插入到表中

mysql - 如何使用 npm mysql 将表达式与批量插入结合使用?

url - 将正则表达式模式作为查询字符串中的参数发送

url - 使用相同的 URL 提供不同的页面

php - 在 TYPO3 后端模块中集成图像

没有排序值的 PHP fetch_array/sql

php - 使用 MySQL 代替文本文件或文件名来确定 PHP 的图像顺序是更快还是更好?

javascript - 在 url 参数 javascript 中存储键值对列表。