在我的应用程序中,我有数百万个短字符串(大多数短于32个字符)。我想实现一个带有附加列表的搜索框,该列表仅包含包含在搜索框中输入的整个字符串的元素。如何预建索引以快速找到此类字符串?所有排序的STL容器都会检查整个字符串。
对于输入的搜索字符串“str”,我需要找到所有包含“str”的字符串:“main street”,“struve”,“ustr”等。
最佳答案
您可以构建一个Permuterm indexes。
对于“strutve”,您将插入Radix tree(或通用搜索树):
struve$
truve$s
ruve$st
uve$str
ve$stru
e$struv
$struve
要搜索中缀,您将从根节点搜索匹配的前缀字符串。