最优雅的分类项目用户界面是什么?

8
我有一些项目需要用户以多种方式进行分组/分类。 为了举例说明,假设这是一组汽车,用户想按以下方式对其进行分类:
- 颜色(红色、银色、蓝色、黑色等) - 车身形状(掀背车、轿车、双门轿车、旅行车等) - 座位数(2、4、5、6等) - 等等。
你是否曾经遇到过一种特别优雅的方法来实现这一点,使用户完全自由地定义自己的类别和值?
显然,在任何设计中都会有很多权衡。例如,可学习的设计可能不够高效,反之亦然。或者某些设计可能比其他设计更需要房地产。而且有些设计将比其他设计需要更长时间来开发。
无论如何,如果你看到过或设计过一个好的模式,我会很感兴趣听听你的意见。如果你有屏幕截图,那就更好了。
澄清尝试:标签确实是一种很好的分类事物的方法,但在我看到的所有实现中,只有一个级别的标记。用户通常不能定义类别/属性和该类别中的项目值。使用上面的示例和StackOverflow的标记,您会将汽车标记为“蓝色”、“轿车”、“4”等。 StackOverflow没有固有的知识,即项目不能被标记为“轿车”和“双门轿车”。
我考虑的界面需要了解那种情况,因此用户定义的属性建议更符合我的思路。我只是渴望找到一个具体的例子,说明这种系统如何优雅地实现(如果这有所不同,则是在桌面应用程序中)。
清楚吗?如果不是,请留下评论,我会再次尝试澄清。 :)

我猜你已经知道标签,现在想知道具体的用户界面,对吧?比如放置图片的位置,如何请求标签,使用哪些容器等等。 - Vinko Vrsalovic
7个回答

9
听起来你有两个任务:任务1是对对象进行分类,对于一系列对象,用户需要在多个维度(属性)上为每个对象分配一个类别(值)。任务2是创建和修改维度和类别。
除了数据建模者、面向对象的程序员和数据库设计师外,维度和类别的概念对大多数用户来说是非常难以理解的。你应该准备好用户可能不理解类别和维度之间的区别。然而,用户通常会理解表格,其中每一列都是一个维度(包括几个类别),每一行都是一个对象。尽可能地使用表格。
第一个关键问题是通过用户研究确定任务1和任务2的集成程度或分离程度。
如果这些任务是集成的,用户经常会毫不费力地从一个任务切换到另一个任务,则一个UI设计是提供一个按维度排列的对象表格,但提供一个空列(或“插入”按钮),以允许用户添加维度。列标题是维度名称,用户可以编辑。标题下面是列出该维度类别的空间。每个类别名称都是可编辑的,并且有一个空行(或插入按钮)用于添加新类别。下面是要分类的对象,每个对象在每个维度的下拉列表中都有一个选项。
在可用性测试中,要注意用户试图通过单击类别列表中的类别来设置对象的类别,而不是从下拉列表中选择。为了防止这种情况发生,使类别列表在视觉上看起来与表格分离。
你可能需要一个按钮来隐藏/显示类别列表,因为即使使用滚动条,这也会占用很多空间。即使任务1和2紧密集成,你也会发现用户有时想把类别列表放到一边。
如果你发现任务1和任务2是分开的,很少一起完成(例如,用户通常先设置维度,然后对一堆对象进行分类),那么最好为每个任务提供单独的窗口(或页面),但应该容易在它们之间来回导航。例如,虽然用户通常会预先设置他们的维度,然后很少修改它们,但有时用户会意识到某个维度需要一个新的类别,而同时又要对一个不寻常的对象进行分类,所以你可以提供一个“添加类别”菜单项,将用户带到管理类别窗口,当前维度插入一个新类别,等待用户提供名称。
任务1的窗口与以前相同:对象表格,每个维度都有一个下拉列表列,但排除类别列表、编辑维度名称和添加新维度的功能。如果用户需要扫描需要分类或重新分类的对象,或者通常需要比较一个对象与其他一些对象(例如,决定如何对对象进行分类),则这是最有效的方法。然而,如果用户的任务真正仅限于根据外部信息(例如从纸张转录信息)逐个对对象进行分类,则应考虑使用表单而不是表格,显示一个属性的数组列表框。通过单击每个列表框来设置每个类别,这比使用下拉列表更快。
任务2的窗口可以像任务一的标题部分一样。它与任务1使用的表格保持一致,允许用户同时查看多个维度的类别,帮助他们找到最佳的分类方案(例如,帮助他们找到在两个不同维度中基本相同的类别出现的位置)。然而,如果空间有问题,则考虑一个维度列表,每个列表显示主细关系中的类别。
任务2的最终用户权力和灵活性是类似树形控件。树的根级别包括维度,层次结构中的下一步包括每个维度内的类别。其主要优点是支持依赖于类别的维度。例如,一个人可能有一个包括汽车、船、飞机等类别的车辆类型维度。对于汽车类别,可以有一个仅适用于该类别的车身类型维度(Coupe、Hatchback等)。依赖维度在树中由类别分支表示。结果是树在每个级别交替使用维度和类别。
重要的是要通过不同的图标、甚至不同的字体来视觉区分类别和维度,以告诉用户层次结构中交替的步骤在质上有所不同(例如,如果您创建了一个维度,则应创建至少两个类别)。即使如此,也要提供一种易于恢复的方式,以防用户将维度与类别混淆(例如,允许他们将一堆“维度”移动到另一个维度下,将前者转换为类别)。
我想再次强调人们对维度和类别等抽象概念的困难。即使他们理解了它,人们通常也很难自己创建合适的维度和类别。这可能会导致复杂的交互作用,需要您考虑(例如,当将类别移动到新维度时,对象分类会发生什么变化?)。如果您期望每个用户真正创建自己的新维度,则可能需要认真重新考虑整个方法。这是一个本质上复杂的任务。

如果文化、组织或领域中已经存在相关的多维方案(例如我们对汽车的方案),用户会做得更好。当然,如果已经存在这样的方案,那么您可以研究它,并将其安装为产品中的默认维度集。任务2只需要支持以允许专家用户进行微调。


一个非常详细的答案。:) 如果有图片/草图,会帮助我更好地理解一些方面,但它仍然非常好。在我的情况下,我不需要支持子维度,但你的大部分建议仍然适用。我会再等待一周左右才接受任何答案。 - Mal Ross
最后回来重新阅读了一下,我终于完全理解了你的答案。确实令人印象深刻。感谢您抽出时间。我现在将其标记为已接受的答案。 - Mal Ross

4
您可以使用标签:让用户为每个图像打上标签,然后按标签排序显示一组图像缩略图。
也许比标签更高级的是一组用户定义的属性。例如,不要用“红色”给图片打标签,而是用属性“颜色=红色”来打标签。

1

面向方面的分类是一种分类事物的方式,但它并没有得到应有的关注。它允许您定义互斥的类别,并为每个类别的每个内容项提供一个值。例如,您可以按地区、品种、年份和价格对葡萄酒进行分类,用户可以通过选择一个或多个类别中的一个或多个值来进行搜索。例如,“40美元以下的法国或意大利红酒”。假设您手头有类别数据,这通常是最强大的分类和搜索技术,比尝试将所有内容都放入单个层次结构或依赖标签更好。

要在后端实现此功能,请为每个类别制作表格,并填充不同的值。然后制作一个表格,其中包含对每个类别表格的外键以及包含内容的字段。这类似于维度数据库设计中的“事实”表。

要了解如何在UI中使用此功能,请查看Facetmap。我无法保证他们的产品,因为我没有使用过,但我已经为自己的应用程序实现了类似的功能,并取得了良好的结果。

http://www.facetmap.com/

再次强调,多面分类背后的理念值得更多的关注,我知道我在这里没有充分阐述它们。如果想以娱乐方式了解该主题,可以听Clay Shirky的“Ontology is Overrated”。

http://itc.conversationsnetwork.org/shows/detail470.html


从facetmap网站上我所了解的情况来看,他们的产品更加针对“用户”编写后端XML文件,然后由他们的应用程序进行翻译并以多种不同的格式呈现。这不完全是我想要的。我希望非技术用户可以定义类别等内容。 - Mal Ross
换句话说,后端听起来不错,但我需要的是前端。 - Mal Ross

1
我建议使用类似于stackoverflow上的标记系统。允许用户对图像进行标记,然后按标记或选项卡组合查看。在查看页面时,显示图像的缩略图和该图像下方的标记。
编辑:根据您的澄清,您可以拥有不同类型的标记。当用户定义自己的标记时,他们需要指定它是从哪种类型派生的。考虑到这一点,您需要将标记限制为该类型中的一个。
TagType { Color, Seats, BodyType, Seats }
TabSubType { Color-Red, Color-Blue, Color-Green, Seats-2, Seats-4, ... }

当用户想要为图像添加标签时,给他们一个下拉菜单,其中包含TagType。在此之下,再给他们另一个下拉菜单,其中包含TabSubTypes。给他们一个“定义新的”选项,这将导致一个文本框出现,他们可以在其中输入新类型。
我还会将这些选项添加到上下文菜单中,以便用户可以以树状菜单的形式查看标签。当图像聚焦时,您还可以捕获按键事件,查找TagType和TagSubType名称,并呈现可供选择的选项菜单。如果没有找到匹配项,则提供“单击以添加新标签”的选项。

0

这似乎是一个需要解决的问题,特别是让用户将维度数据分类为更简化的维度(组或类别)以便他们可以通过简化的类别/维度更好地可视化数据。

用户需要能够导入列表,并基于这些维度直观地创建维度并对列表进行分类。创建维度将包括命名/重命名维度(列名称),然后添加/重命名/删除该维度的类别(列项)。在新建维度和实际上使用用户创建的新维度逐个或批量对列表项进行分类之间切换应该是无缝的。然后,用户可以导出包含新创建类别的附加列或列(维度)的列表。

这个想法比只有一个表格并向其中添加列要更加用户友好。理想情况下,您将能够选择列表中的项目,然后从用户创建的维度列表中分配经过验证的类别项,这将自动填充只读表格,该表格可以导出。输入=列表,输出=全面分类的列表。不需要电子表格。


0
我可能误解了你的问题,但这不是标签的作用吗(例如在Stack Overflow和Gmail中)。或者你想要比那更具体的东西?

0

好的,嗯,我倾向于过多地谈论这个问题,但标记只是使用三元图(例如使用RDF)可以做的事情的一个例子。[插入维基百科链接]。现在我知道你说标签不够用,因为需要嵌套的要求,但没有理由不能将“标记标记”进一步作为彼此的子级。

Car|Tagged_with|Red
Red|Is_child_of|Colours

这样,您的数据将保持超级灵活,实际上数据和元数据之间的界限变得模糊。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接