在大量文件路径中搜索模式

时间:2016-09-18 08:25:27

标签: algorithm search filepath

我有一个数据库,从~10K Windows机器收集了大约1.5G的唯一文件路径。我需要查找像

这样的模式
*win*.*

在路径中。当然,路径彼此非常相似。像" c:\ Users ..."和" C:\ Temp .."经常出现。我不能忽略构成所有路径的约40%的临时文件。

平均路径长度为160字节。数据库很大,不适合RAM。

是否有一种方法可以改善基于云的解决方案的性能?

感谢。

更新:通配符可以不同,但​​我可能会将可能的通配符限制为某些预先配置的通配符。例如,只有一颗或两颗星。

更新2:通配符模式类似,略有不同,通常只包含基本名称或基本名称的一部分。结果数量不会很大。通常我希望得到100到1000次点击。我不需要立即在一个大块中获得所有结果,但是如果我快速得到一些结果会有所帮助,最终我需要得到所有结果。我们的想法是在几秒钟/几分钟内得到结果。

更新3。 需要Unicode字符串支持,但非英语路径相对较少

更新4.我明白我可以投入更多机器和RAM并解决问题。不幸的是,如果可能的话,限制是使用单个机器(可以是具有相当数量的RAM和SSD的多核)。

1 个答案:

答案 0 :(得分:2)

我首先尝试以下内容(除非有其他限制使这不切实际):

拆分\处的路径,并将重复数据删除的部分存储在数据库表中。如果此集合足够小以便在时间限制内进行搜索,则将路径存储为部件ID列表,并按部件ID索引,以便您可以按ID找到包含给定部件的所有路径。

如果某个模式跨越目录边界,则需要先搜索部分模式,然后使用完整模式过滤生成的候选模式。