1

我有数百万个搜索引擎查询,如下所示:

Stack Overflow
Java Video Tutorials
Cars
C++ vs Java

现在我想实现一个自动完成功能可以满足这些需求:

1. Type in 'so',       Prompt ['Stack Overflow','...','...']
2. Type in 'overflow', Prompt ['Stack Overflow','...']
3. Type in 'jvt',      Prompt ['Java Video Tutorials','...']
...

这是我的解决方案:

1)。提取查询的缩写,例如 Stack Overflow -> SO;

2)。将查询拆分为后缀词,例如 Stack Overflow -> 'Overflow' + 'Stack Overflow';

3)。现在我们得到“堆栈溢出”的三个序列:

'SO','Overflow','Stack Overflow'

4)。最后,我将这三个序列索引到一个 TrieTree 中,并在每个序列的最后一个节点中表示它们的原始查询(或查询 id):

'o' --> 'Stack Overflow'
'w' --> 'Stack Overflow'
'w' --> 'Stack Overflow'

但我认为这太复杂了,有没有人有更好的解决方案?非常感谢 !

4

0 回答 0