【发布时间】:2011-12-12 12:11:21
【问题描述】:
对于以下情况,是否有可用于自动建议/完成的库
搜索“Vir”会返回“West Virginia”和“Virginia”
谢谢
编辑
很抱歉没有详细解释。在上面的问题中,我不想要“包含”搜索,而是在单词边界上进行前缀搜索。所以“est”不应该返回“West Virginia”,但“wes”或“vir”应该。
列表大约有 500 项。
建议的解决方案
我修改了 Mike de Boer https://github.com/mikedeboer/trie 的 trie 实现来解决这个问题。我在单词边界上拆分了一个项目并将每个单词存储在 trie 中。对于每个单词的最后一个字母,我将单词来自的项目的索引存储在 trie 节点中。当用户搜索时,我返回一个索引列表,然后从主列表中获取相应的项目。
你们觉得呢?
【问题讨论】:
-
您是否仅使用 Javascript,例如您有一个 js 对象文件并想要过滤匹配的对象,或者您有一个将检索 JSON 的后端应用程序(PHP、Python、...)你已经过滤了吗?
-
基于Javascript。不与任何后端应用程序交互。我有一个大约 500 项的列表。
-
建议您根据需要使用诸如 underscore.js documentcloud.github.com/underscore/#filter 之类的库来创建对象过滤器,然后您可以将其保留在某个插件上或编写您自己的 Auto Suggest 组件:)
-
@GabrielGartz 我已经用建议的解决方案更新了这个问题。告诉我你的想法。我不会使用迭代解决方案,因为我的列表有点大。
-
这是一个很好的解决方案,我认为对于您的情况,您不需要 trie 代码,您只需要一个对象来索引(您已经完成)您的结果和一个查找函数来过滤和忽略大小写或一些特殊字符。 :)
标签: javascript jquery jquery-plugins autocomplete jquery-autocomplete