1

我正在使用 PHP 和 MySQL 创建一个网站来发布相关网站。我正在为这个站点使用一个带有逗号分隔标签的标签系统,例如我的标签看起来像:php、mysql、code、programming

我使用这个逗号分隔标记系统的原因是因为我希望用户能够为他的帖子插入他想要的任何类型的标记

我已经从这个网站和互联网上进行了搜索,但答案与我的问题并不真正相关。许多标记系统使用三个表,如 item、tag_map 和 tag,我认为它不适用于逗号分隔的标记系统。

到目前为止,我已经创建了一个包含名称和标签字段的表。我发现的最佳解决方案是使用Tf–idf,词频–逆文档频率来相对于其内容对帖子进行加权。

有没有其他好的解决方案?如果没有,如果有人可以使用 php 代码解释这个 tf-idf 示例,我真的很感激。

4

1 回答 1

1

这不是不应该做的方式,就像评论中提到的那样。你应该把它分成三个表:

存储帖子本身的表;

Table posts
-----------
id
text

所有标签的表格;

Table tags
-----------
id
name

最后是一张连接两者的表;

Table postTags
-----------
id
postId
tagId

从这些中选择数据时,您可以使用如下查询:

SELECT * FROM posts p
INNER JOIN postTags pt ON pt.postId = p.id
INNER JOIN tags t ON pt.tagId = t.id
于 2012-10-11T21:03:56.497 回答