如何使用PHP / MySQL在Hashtag之间建立关系?

时间:2019-05-21 08:08:50

标签: php mysql api instagram

我正在使用PHP中的工具来扫描Instagram,以收集有关一堆标签的分析。目的是监视某些标签的演变/增长,并为人们提供一个搜索引擎,以获取有关每个标签的最新统计信息。

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

我面临的问题是,我想扩大搜索结果的范围,使其包含与#travel 相关的内容,就像http://displaypurposes.com或{{3} },而我正试图弄清楚他们是如何做到的。

我特别着迷于第一个函数,以及Graph函数:http://best-hashtags.com/

看起来他们已经有效地映射了众多主题标签之间的所有链接,并根据这些结果提供了结果。

我的数据库中大约有45000个主题标签,如何将它们链接在一起以实现“相关性搜索”,就像我上面提到的两个网站一样?如何建立类似的东西?我花了很长时间在网上寻找内容,却找不到我的问题的答案。

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

这实际上不是编程问题,但我将尝试以解决该问题的方式回答。

在单个Instagram帖子上可能有多个标签。例如,您可能会让某人发布带有##rome #travel标签的罗马图片。现在,这将#rome#travel关联起来,并将其视为两者之间的联系。

只要我们具有具有以下属性的表结构:

  • PostNumber
  • 标签

我们可以通过运行以下代码来找到最重要的关系:

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个最重要的关系,依此类推。

要对此进一步扩展,关键是将帖子拆分为一个表,每个主题标签每个帖子有1行。如果您要对大文本进行通配符搜索,这将导致处理时间长且效率低下。