0

我对编程算法的想法很陌生。我可以处理简单的想法,但我目前的项目要求我创建一些更复杂的东西。

我正在尝试创建一个基于关键字和“一般”类别子集的分类系统,这些分类系统过滤成更详细的类别,需要用户尽可能少的工作。

IE

体育 >> 棒球 >> 投球 >> Nolan Ryan

因此,如果用户决定他们想要谈论“棒球”并且他们过滤了搜索,我还想包括“体育”

用户输入:“棒球”

然后用户被带到体育>>棒球

现在我明白,如果没有一个以某种方式将这两个类别联系起来的活生生的动态程序,这将是不可能的。它最初还需要“一些”用户输入,并且在软件的整个生命周期中需要更多输入,以便维护它并使其保持最新。

但是,唉,如果没有详细说明我正在尝试做的事情的具体细节,要求这样的算法将是轻浮的。而且我并不是要寻求帮助。

相反,我很好奇人们是否知道已经实施的类似系统,以及是否有文档描述它是如何完成的。甚至是您自己项目的一些真实示例。

简而言之,我有一个“计划”,但它需要的用户输入比我真正想要的要多。在开始开发这个程序之前,我觉得获得更多关于这个主题的信息将是最好的做法。

谢谢

4

2 回答 2

1

恕我直言,这并不像你想象的那么难。你想要什么被调用Tagging,你可以通过设置标签之间的相关性来自动完成它(即一个Tag可以有它的有意义的信息加上它与其他的关系。然后,如果用户很好地选择了一个标签,你可以通过查看你的ADT 集合(可以像数组一样简单)。

Tag: 
    Sport
Related Tags
    Football
    Soccer

...

我希望这会有所帮助!

于 2012-09-12T17:00:40.570 回答
1

听起来您想要做的是创建一个树/菜单结构,然后能够快速检索树中任何给定键的“面包屑”。

这是我的想法:

  1. 创建包含所有分支的树。如果你想让分支共享密钥也没关系——只要你能给用户一个“找到多个,请选择哪一个......?”的“选择”。

  2. 对于树中的每个键,生成面包屑。这很耗时,如果树非常大并且定期更新,那么离线、在云中或通过 hadoop 等可能会更好。

  3. 将键和面包屑存储在诸如 redis 之类的键/值存储中,或者根据需要存储在内存/缓存中。如果您想跨类别/分支共享键,您将希望每个值都有一个数组。

  4. 当用户选择一个键时 - 在存储中查找该键,并且如果结果值仅包含一个匹配项,那么您只需构造面包屑以将用户带到您希望他们去的地方。如果它有多个,你给他们一个选择。

我什至会说,如果您需要更有机的东西,比如说用户可以从其他任何地方动态创建“新主题”,那么您可能希望在初始导入后根本不使用树 - 而只是更新您的键/值存储实时。

于 2012-09-13T09:27:02.253 回答