如何使用 PHP / MySQL 建立标签之间的关系?

How to establish relationships between Hashtags using PHP / MySQL?

我正在 PHP 中开发一种工具,该工具可以扫描 Instagram 以收集对一堆主题标签的分析。目的是监控某些主题标签的演变/增长,并为人们提供一个搜索引擎,以获取每个主题标签的最新统计数据。

到目前为止,我已经有了一个相当简单的搜索引擎,我 运行 一个 SQL 查询来查找 LIKE %'travel'%。因此,如果有人输入“#travel”,他们将获得包含世界的任何内容 "travel",例如 "travelagent" "iliketotravel",等等

我面临的问题是我想扩大搜索结果以包括与#travel 相关 的内容,就像 http://displaypurposes.com or http://best-hashtags.com/ 这样的网站我正试图弄清楚他们是如何做到的。

我对第一个特别着迷,Graph 函数:https://displaypurposes.com/graph?tag=travel

看起来他们已经有效地映射了大量主题标签之间的所有链接并提供基于此的结果。

我的数据库中有大约 45 000 个主题标签,我如何将它们链接在一起以启用 "relevancy search" 就像我上面提到的两个网站一样?如何构建类似的东西?我花了很长时间在网上查找,但找不到我的问题的答案。

感谢您的帮助! :)

这不是一个真正的编程问题,但我会尝试以一种解决它的方式来回答它。

一个 Instagram 上可以有多个标签 post。例如,您可能让某人 post 使用主题标签 #rome #travel 发一张罗马的照片。这现在将 #rome#travel 相关联,并将其视为两者之间的连接。

只要我们有一个具有以下属性的table结构:

  • 邮编
  • 话题标签

我们可以通过 运行 类似下面的代码找到顶部关系:

SELECT  COUNT(*) `Relation Occurances`, 
        b.Hashtag
FROM 
    Posts a
JOIN 
    Posts b
ON 
    a.PostNumber = b.PostNumber
WHERE 
    a.Hashtag = '#travel'
AND 
    b.Hashtag != '#travel'

如果需要,您可以优化查询以限制为 100 个顶级关系等。

为了进一步扩展这一点,关键是将 post 拆分为 table,每个主题标签每个 post 一行。如果您对大文本进行通配符搜索,这将导致处理时间过长且效率低下。