Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何找到;此值也主要与该值一起使用;使用标记表和对象表?_Php_Mysql - Fatal编程技术网

Php 如何找到;此值也主要与该值一起使用;使用标记表和对象表?

Php 如何找到;此值也主要与该值一起使用;使用标记表和对象表?,php,mysql,Php,Mysql,在我的网站(www.wyska.net)上有以下表格: 标签 身份证 名字 uses-表中提到标记的次数\u tag\u wyska _塔古·威斯卡 wyska_id 标签号 然后是一个表wyska,它现在并不重要 由于表\u tag\u wyska可以具有相同的wyska\u id和多个条目,我如何确定一个标记是否与其他标记一起使用,以及哪个标记主要与其他标记一起使用?这是最好的方式吗?缓存它或使用不同的表来保持最新,或者 例如,wyska_id=abcd1234具有以下标记: 政治

在我的网站(www.wyska.net)上有以下表格:

标签

  • 身份证
  • 名字
  • uses-表中提到标记的次数
    \u tag\u wyska
_塔古·威斯卡

  • wyska_id
  • 标签号
然后是一个表
wyska
,它现在并不重要

由于表
\u tag\u wyska
可以具有相同的
wyska\u id
和多个条目,我如何确定一个标记是否与其他标记一起使用,以及哪个标记主要与其他标记一起使用?这是最好的方式吗?缓存它或使用不同的表来保持最新,或者

例如,
wyska_id=abcd1234
具有以下标记:

  • 政治学
  • 策略
  • 民主党人
然后,wyska_id=1234abcd具有以下标记

  • 策略
  • 游戏
  • 传奇联盟
然后,另一个
wyska_id=7890defa
具有以下标记

  • 策略
  • 游戏

我知道strategy被使用了3次,games 2次,其余1次,但我需要知道的是,
strategy
标记主要用于单词
game
,因此我将把
game
strategy
关联在一起,例如建议用户子搜索标记,或者找到聪明的方法来分析数据并动态创建类别,或者。。只是因为这是一个有趣的问题

如果您已经知道其中一个标记,您可以使用它来查找相似之处:

SELECT tag.id, tag.name, COUNT(wyska_id) AS similarities
FROM _tag_wyska
LEFT JOIN tag ON tag.id = _tag_wyska.tag_id
WHERE wyska_id IN (
    SELECT wyska_id
    FROM _tag_wyska
    WHERE tag_id = '$SELECTED_TAG'
)
GROUP BY wyska_id
ORDER BY similarites DESC

可能需要一些调整,但总体思路是选择所有具有所需标记的wyska_ID,然后找到具有相同wyska_ID的最高计数的其他标记。

阅读sql
GROUP BY
ORDER BY
文档:)不是那么容易。我在抱怨可能有上百万条记录,而一组人告诉我那些使用率很高并且使用了另一个标签的记录可能需要几秒钟。。。当我知道一个标签会起作用时,这一点是很重要的,但我不想建议也基于一个数字或标签,这个数字或标签经常与另一个标签一起使用。如果一个标记本身被使用了5000次,我不想显示它,但是如果它有,比方说,25%或更多的时间与它相关,那么它就是一个有效的标记。有道理?