我的项目中有类似查询的问题。要求是大约1000万名的“喜欢”,例如:
艾米 涉 菲尔 jedwk edwords 琼斯
我想要有'edw'的srarch名字,结果应该是'jedwk'和'edwords'。 就像在“sql。”中选择“来自'%edw%''这样的名称的表。
你有一些算法可以解决这个问题吗? 谢谢!
答案 0 :(得分:0)
您可以使用 suffix tree 的变体,其中树中的每个叶子都包含对此后缀所引用的原始字符串的引用。
这将允许您在后缀树上遵循输入查询的路径,并从那里执行DFS以获取从此子字符串可到达的所有叶子。每个叶子都包含相关的字符串 - 您只需要提取它们。
PS请注意,大多数信息检索系统不允许“子字符串”搜索,只允许“前缀搜索” - 例如使用trie更容易实现。