在百度或淘宝搜索时,每输入字符都会出现搜索建议,比如输入“北京”,搜索
框下面会以北京为前缀,展示“北京爱情故事”、“北京公交”、“北京医院”等等搜索词。实现
这类技术后台所采用的数据结构是什么?[中国某著名搜索引擎B公司2012年6月笔试题]
答案:Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是
一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字
符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的
字符串比较,查询效率比哈希表高。Trie树的核心思想是空间换时间。利用字符串的公共前
缀来降低查询时间的开销以达到提高效率的目的。
对于搜索引擎,一般会保留一个单词查找树的前N个字(全球或最近热门使用的);对
于每个用户,保持Trie树最近前N个字为该用户使用的结果。
如果用户点击任何搜索结果,Trie树可以非常迅速并异步获取完整的部分/模糊查找,
然后预取数据,再用一个Web应用程序可以发送一个较小的一组结果的浏览器。