如何在查询中查找前缀的匹配项



我不知道如何在问题标题中解释它。假设我有一个"红色兴趣蛋糕"的查询(对不起(。我想搜索一个大型项目数据库(比如描述(。我需要找到所有将整个查询作为其描述的一部分或前缀的描述/项目。例:

红色有趣的蛋糕

符合条件,因为它有"红色","利息"和"蛋糕"。

这个想法清楚吗?我该怎么做?我想过使用 trie,但我不确定它会很好地工作。

首先,将查询作为前缀查找意味着查询作为一个整体存在,因此我们只需要关注问题的第二部分,从而降低算法成本。 这是我对它纯粹数学的看法。假设您的数据库包含大约 100 万个描述,每个描述的长度为 1000 个字符。并且您的查询长度为100个字符(平均约10字( 我建议尽可能多地检索适合您机器的描述。然后对每条记录 ABD 运行 KMP 字符串匹配算法(如果匹配(将其附加到结果字典中。 应用时,kmp 算法最坏情况执行的成本约为 1 mil * (10*(1000+100(( 操作。我猜大约需要 10 秒才能获得所有比赛。 不确定这是否是一个可接受的解决方案,或者我的假设是否准确。但是尝试使用 kmp 并为您的问题添加一些优化肯定会很有趣。

最新更新