【问题标题】:Tags php improving database speed and user experience标签 php 提高数据库速度和用户体验
【发布时间】:2010-06-02 20:38:35
【问题描述】:

stackOverFlow 是如何实现的,如果它不是该系统的第一个实现,请原谅。决定它的初始标签在哪里?

我想在我的网站上为用户提供最佳体验,并且正在实施标签系统。我不关心搜索引擎或任何这些。我只关心我的用户。

当他们允许用户标记事物时,是否有人对失败或成功的事情有任何建议?

有没有人知道一些关于用户标记方法的好资源? 有没有人知道一些从编程角度、数据库结构、理论等方面实现标签系统的好资源?

我会把支票交给我认为在该主题上为我指明最佳方向的人。

【问题讨论】:

  • Twitter 使用一种称为主题的标记系统,它们用# 符号表示。它们没有被过滤,但随着 Twitter 识别趋势而变得有用。用户将自我监督以保持趋势。出于同样的原因,我倾向于在我的帖子中选择计数更高的标签。我希望我的帖子具有相关性。
  • 另外我应该问有没有人知道一个好的 php 标签库来研究?唯一的问题是,我是个守财奴。

标签: php database-design tags


【解决方案1】:

标签系统是多对多的关系(一个项目可以有很多标签,一个标签可以有很多项目)。实现这一点的一种方法是为标签创建一个表,为被标记的项目(例如文章)创建一个表,并为标签/项目关系创建一个交叉表。

表“标签”:

id
tagname

表“项目”:

id
itemname
itemcontent

表“Item_Tag”:

item_id
tag_id

每次标记一个项目时,只需在 Item_Tag 表中添加另一行。加入表格以获取关系。例如,要查找所有标记为“PHP”的项目:

SELECT Item.id,Item.itemname FROM Item
JOIN Item_Tag ON Item_Tag.item_id = Item.id
JOIN Tag ON Tag.id = Item_Tag.tag_id
WHERE Tag.tagname = "PHP";

对于标签的实际使用,你唯一要注意的是标签太多。如果您的所有标签只有几个被它标记的项目,那么搜索不会给出好的结果。您可能必须手动监管标签创建过程,以防止重复类似的标签。

对于开始使用的标签,除非您告诉我们您的网站是关于什么的,否则我们无法为您提供帮助。我确信 Stack Overflow 是从所有编程语言和其他一些编程主题(如算法、OOP 等)的标签开始的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多