2020-09-05

如何实现搜索引擎的搜索关键词提示功能?

我们假设关键词库由用户的热门搜索关键词组成。我们将这个词库构建成一个Trie树。当用户输入其中某个单词的时候,把这个词作为一个前缀子串在Trie树中匹配。为了讲解方便,我们假设词库里只有hello、her、hi、how、so、see这6个关键词。当用户输入了字母h的时候,我们就把以h为前缀的hello、her、hi、how展示在搜索提示框内。当用户继续键入字母e的时候,我们就把以he为前缀的hello、her展示在搜索提示框内。这就是搜索关键词提示的最基本的算法原理。

2020-09-05
不过,我讲的只是最基本的实现原理,实际上,搜索引擎的搜索关键词提示功能远非我讲的这么简单。如果再稍微深入一点,你就会想到,上面的解决办法遇到下面几个问题:
我刚讲的思路是针对英文的搜索关键词提示,对于更加复杂的中文来说,词库中的数据又该如何构建成Trie树呢?

如果词库中有很多关键词,在搜索提示的时候,用户输入关键词,作为前缀在Trie树中可以匹配的关键词也有很多,如何选择展示哪些内容呢?

像Google这样的搜索引擎,用户单词拼写错误的情况下,Google还是可以使用正确的拼写来做关键词提示,这个又是怎么做到的呢?

实际上,Trie树的这个应用可以扩展到更加广泛的一个应用上,就是自动输入补全,比如输入法自动补全功能、IDE代码编辑器自动补全功能、浏览器网址输入的自动补全功能等等。