如何在查询

时间:2017-07-01 20:41:29

标签: python string algorithm performance search

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

  

带红色的有趣蛋糕

符合条件,因为它有'红色','兴趣'和'蛋糕'。

这个想法清楚了吗?我该怎么做?我想过使用trie但是我不确定它是否能正常工作。

1 个答案:

答案 0 :(得分:0)

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