Trie 树实现简单的前缀搜索关键词提示

2017-01-16 09:19:33 +08:00
 7color94

最近整理 KMP , Trie , Trie 图三个算法。后来就直接用 Trie 树实现 web 端的搜索关键词提示小功能。

实现原理:利用 1w2 英文单词建立 Trie 树。前端实时检测用户键盘输入,通过 ajax 请求计算得到:当前输入字符串作为前缀时所有的英文单词。并显示在输入框下方。

进一步改进:通过记录用户输入的日志,利用 top-k 算法计算出热度最高的高频词,提示的时候只提示高频词,而不是现在这样提示所有包含前缀的关键词。

项目地址: https://github.com/7color94/search-suggest

3028 次点击
所在节点    算法
5 条回复
BuilderQiu
2017-01-16 09:24:13 +08:00
我在想这种集群环境下要怎么弄,每台机器都弄一份?
pandachow
2017-01-16 10:51:29 +08:00
问下同一个子树下面的排序是怎么做的?比方说输入了 te, 下面的 tee 和 tea 是怎么排列的,谁排在前面?字母顺序吗?
7color94
2017-01-16 12:23:27 +08:00
@BuilderQiu ajax 到中心服务器请求数据?
7color94
2017-01-16 12:24:32 +08:00
@pandachow 目前我是按照建立 Trie 树的顺序排列的。谁先出现谁排在前面。如果是真正应用场景的话,根据“热度”排列吧。
jedihy
2017-02-17 02:48:39 +08:00
@BuilderQiu 假设第一个节点有 a-z 个子节点,可以把 a-z 的子树存到 26 台主机。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334816

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX