繁体   English   中英

修剪自动完成条款

[英]Prune Down Autocomplete Terms

我在自动填充框中有大量的术语列表。 我一直在思考如何修剪它们的几种不同方案,但是我还没有想到什么。

基本上,该结构与记录标签非常相似-

  • 一个艺术家有专辑一个专辑有歌曲
  • 个别歌曲可能会很流行,专辑主要是其潜在歌曲受欢迎程度的总和
  • 专辑中的歌曲数量也变化很大-因此,如果专辑中有数百首歌曲,则很可能有人会搜索它,而歌曲数较少时,搜索它的可能性就更小
  • 随着自动填充功能变得更加具体(更多字母),我希望显示更少的术语

我在想这样的事情:

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,但似乎无法正确处理。

我刚刚在Google Code上发布了服务器端自动完成功能的实现 该项目包括一个可以集成到现有应用程序中的Java库和一个独立的HTTP AJAX自动完成服务器。 踢轮胎!

您可以尝试关闭自动完成功能

这不是一个容易实现的算法,因为您试图以两种方式对数据结构建立索引-字典编排和流行度索引。

一种方法是构建压缩的歌曲三重奏 ,其中在每个节点处存储以该前缀开头的N首最受欢迎歌曲的预先构建列表。 这将占用大量存储空间(O(NUM_SONGS * N)),但将允许快速查找(O(PREFIX))。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM