代码之家  ›  专栏  ›  技术社区  ›  aronchick

删减自动完成项

  •  0
  • aronchick  · 技术社区  · 16 年前

    我在自动完成框中有一个非常大的术语列表。我一直在考虑如何删减它们的几种不同方案,但我还没有想出任何好办法。

    基本上,结构与唱片标签非常相似-

    • 艺术家有专辑,专辑有歌曲
    • 个人歌曲可能很受欢迎,专辑大多是其潜在歌曲受欢迎程度的总和
    • 专辑中的歌曲数量也不尽相同——因此,如果一张专辑中有数百首歌曲,很可能有人想要搜索它,而这种可能性要小得多 如果它有更少的歌曲
    • 随着自动完成变得更加具体(更多的字母),我希望不太可能显示术语

    我是这样想的:

    Apple   10
    Banana  10
    Crab    20
    Diner   30
    Dish    20
    Daily   10
    Diver   20
    Dice    10
    

    有没有一种特殊的算法可以做到这一点?还是为此而构建的AJAX自动完成程序?我目前正在使用Prototype/Scriptaculous,但我似乎无法正确使用它。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Avi    16 年前

    一种方法可能是建立一个 compressed trie 其中,在每个节点上存储以该前缀开头的N首最流行歌曲的预构建列表。这将占用大量存储空间(O(NUM_SONGS*N)),但允许快速查找(O(前缀))。

        2
  •  4
  •   Shilad Sen    16 年前

    我刚发了一封信 server-side autocomplete implementation 关于谷歌代码。该项目包括一个可以集成到现有应用程序中的java库和一个独立的HTTP AJAX自动完成服务器。踢轮胎!

        3
  •  1
  •   Annie    16 年前