问题标签 [tagging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
115894 浏览

sql - 推荐的用于标记或标记的 SQL 数据库设计

我听说过几种实现标记的方法;使用 TagID 和 ItemID 之间的映射表(对我来说很有意义,但它可以扩展吗?),向 ItemID 添加固定数量的可能 TagID 列(似乎是个坏主意),将标签保留在逗号分隔的文本列中(听起来疯狂但可以工作)。我什至听说有人推荐一个稀疏矩阵,但是标签名称如何优雅地增长?

我错过了标签的最佳实践吗?

0 投票
6 回答
4521 浏览

sql - SQL 多对多匹配

我正在为网站实施标记系统。每个对象有多个标签,每个标签有多个对象。这是通过维护一个表来完成的,每个记录有两个值,一个用于对象的 id 和标签。

我正在寻找编写一个查询来查找与给定标签集匹配的对象。假设我有以下数据([object] -> [tags]* 格式)

如果我想匹配(红色),我应该得到苹果和救火车。如果我想匹配(水果,食物),我应该得到(苹果,香蕉)。

我如何编写一个 SQL 查询来做我想做的事?

@杰里米·鲁滕,

感谢您的回答。使用的表示法用于提供一些示例数据 - 我的数据库确实有一个表,每条记录有 1 个对象 id 和 1 个标签。

其次,我的问题是我需要获取与所有标签匹配的所有对象。用你的 OR 代替 AND 像这样:

运行时不产生任何结果。

0 投票
11 回答
85590 浏览

sql - 用于标记的数据库设计

您将如何设计数据库以支持以下标记功能:

  • 项目可以有大量的标签
  • 搜索使用给定标签集标记的所有项目必须快速(项目必须具有所有标签,因此它是 AND 搜索,而不是 OR 搜索)
  • 创建/写入项目可能会更慢以实现快速查找/读取

理想情况下,使用(至少)一组 n 个给定标签标记的所有项目的查找应该使用单个 SQL 语句完成。由于要搜索的标签数量以及任何项目上的标签数量都是未知的并且可能很高,因此使用 JOIN 是不切实际的。

有任何想法吗?


感谢到目前为止的所有答案。

但是,如果我没记错的话,给出的答案显示了如何对标签进行 OR 搜索。(选择具有一个或多个 n 标记的所有项目)。我正在寻找有效的 AND 搜索。(选择具有 ALL n 标签的所有项目 - 可能还有更多。)

0 投票
4 回答
15894 浏览

python - Django中的联合和相交

简单的模型只是为了问我的问题。

我想知道如何以两种不同的方式使用标签查询博客。

  • 带有“tag1”或“tag2”标签的博客条目: Blog.objects.filter(tags_in=[1,2]).distinct()
  • 用“tag1”和“tag2”标记的博客对象:
  • 完全用“tag1”和“tag2”标记的博客对象,没有别的:??

标记和博客仅用于示例。

0 投票
3 回答
3420 浏览

tags - 标签层次结构和处理

这是一个真正的问题,通常适用于标记项目(是的,这也适用于 StackOverflow,不,这不是关于 StackOverflow 的问题)。

整个标记问题有助于聚集相似的项目,无论它们可能是什么项目(笑话、博客文章、问题等)。但是,存在(通常但不严格)标签的层次结构,这意味着某些标签也暗示其他标签。举一个熟悉的例子,“c#”so 标签也暗示“.net”;另一个例子,在笑话数据库中,“金发女郎”标签暗示“嘲讽”标签,类似于“爱尔兰”或“比利时”或“加拿大”等,具体取决于笑话的国家/地区。

如果你有,你是如何在你的项目中处理这个问题的?我将提供一个答案,描述我在两个不同案例中使用的两种不同方法(实际上,相同的机制但在两个不同的环境中实现),但我不仅对类似的机制感兴趣,而且对你对层次结构问题的看法也感兴趣.

0 投票
4 回答
1302 浏览

mysql - MySQL 限制多对多关系

给定用于实现标签的 SCHEMA

项目项目 ID、项目内容

标记标记 ID、标记名称

ITEM_TAG 项目 ID、标签 ID

使用标签选择时限制返回的项目数量的最佳方法是什么?

当然是让它们全部恢复的最简单方法,但是使用限制子句会失效,因为您会得到每个标签的所有项目的副本,这会计入 LIMIT 中的行数。

0 投票
7 回答
10616 浏览

sql - 是否有公认的理想标记模式

我有一个照片网站,我想支持标签,因为我的原始类别分桶开始失败(有些照片是家庭和假期,或学校和朋友)。是否有商定的标记数据库模式?

我仍然想支持将照片作为相册的一部分。

现在我有几张桌子:

相片

  • 照片ID
  • 相册ID
  • 标题
  • 日期

相片集

  • 专辑编号
  • 专辑名称
  • 专辑日期
0 投票
5 回答
108 浏览

performance - 在 Web 2.0 站点中,新添加的标签需要多长时间(以秒为单位)才能显示并被索引以供搜索?

我正在构建一个具有标记功能的 web 2.0 站点,并希望从任何有经验的人那里了解系统可以花费多长时间(以秒为单位)a)在给定记录上显示新标签和 b)索引标签以供搜索. 例如,新添加的标签是否必须在 1 秒内可供搜索,但在 0.1 秒内显示在用户屏幕上?

0 投票
4 回答
1845 浏览

python - 如何使用 CouchDB 构建“标记”支持?

我正在使用以下视图函数来迭代数据库中的所有项目(以查找标签),但我认为如果数据集很大,性能会很差。还有其他方法吗?

0 投票
2 回答
119 浏览

tags - 您将如何识别用户最活跃的部分?

在网站上,所有内容都由工作人员指定的关键字标记(由于其性质,它不是社区驱动的网站)。我能够确定用户最活跃的标签(或者,他们查看最多的标签)。但是,我不确定如何选择列表。出现了一些选项,但它们对我来说似乎不正确。

  • 取前 n 个(如果查看的标签少于 n 个,则为 m < n)标签
  • 取前 n 个标签,其中 n 是查看的总标签的百分比
  • 获取具有 m 个视图的前 n 个标签,其中 n 和 m 是查看的总标签和总页面视图的百分比
  • 获取所有标签,无论视图如何

目标是确定用户最感兴趣的内容,并根据分配给内容的标签向他们展示他们可能感兴趣的其他内容。