1

我有一个包含很多文件的文件夹,我需要优化搜索速度,因为我有超过 1k 的不同文件要搜索,实际上我正在使用这个:

for path,dirs,files in os.walk('M:/MYFOLDER'):

但是搜索所有文件夹需要很长时间(超过 30 分钟)(因为它逐个文件搜索),但“Windows 搜索”需要 20 秒才能找到它。

您知道一些优化搜索并使其更快的技巧吗?

感谢您的任何提示。

4

2 回答 2

2

你在信息检索的土地上,而不是每次都从头开始搜索 - 做搜索引擎所做的事情:

  • 索引你的数据(预处理,只做一次,或者偶尔做一次 - 这假设文档的集合是相对稳定的 - 与搜索次数相比变化很小)
  • 每次出现查询时——在索引中搜索以快速找到答案。

这种方法不仅允许您稍后返回相关文档,而且还允许您通过使用一些已经证明的启发式方法(例如tf-idf 模型)将它们从最相关到​​最不相关进行排名。

有一个名为Lucene的开源项目,它还具有可以帮助您实现的python 绑定。Lucene 是一个成熟的广泛使用(并且经过广泛测试)的信息检索库(例如,用于 eclipse 搜索)


PS如果您发现自己对信息检索更感兴趣,我建议您阅读 Manning 的信息检索简介- 它会让您对该领域有很好的理解 - 但对于应用您的任务来说,这真的不是强制性的。

于 2013-02-21T15:20:23.353 回答
0

您可以使用Windows Search SDK + Python ctypes

于 2013-02-21T15:38:52.200 回答