我有一个非常大的术语列表,可以在自动完成框中使用。我一直在考虑如何修剪它们的几种不同场景,但我还没有想出任何好的东西。
基本上,结构与唱片标签非常相似 -
我在想这样的事情:
Apple 10
Banana 10
Crab 20
Diner 30
Dish 20
Daily 10
Diver 20
Dice 10
如果这是专辑列表,并且我分配了它们的“得分”,我只是根据我显示的列表的长度(例如3)然后按分数 - 我点击“弹出选择列表” D“上面,”Diner“,”Dish“和”Diver“出现,然后”i“,它变成”Diner“,”Dish“和”Diver“。
有没有特定的算法可以做到这一点?或者为此构建的AJAX自动完成程序?我目前正在使用Prototype / Scriptaculous,但我似乎无法正确使用它。
答案 0 :(得分:4)
我刚在Google Code上发布了server-side autocomplete implementation。该项目包括一个可以集成到现有应用程序中的Java库和一个独立的HTTP AJAX自动完成服务器。踢轮胎!
答案 1 :(得分:1)
您可以尝试closure autocomplete。
答案 2 :(得分:1)
这不是一个容易实现的算法,因为您试图以两种方式索引数据结构 - 按字典顺序和受欢迎程度。
这样做的一种方法可能是制作compressed trie首歌曲,其中每个节点都存储一个以该前缀开头的N个最流行歌曲的预建列表。这将占用大量存储空间(O(NUM_SONGS * N)),但允许快速查找(O(PREFIX))。