1

多くのファイルを含むフォルダーがあり、検索するファイルが 1k 以上あるため、検索速度を最適化する必要があります。実際にこれを使用しています。

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

しかし、すべてのフォルダを検索するには非常に長い時間がかかります (ファイルごとに検索するため) (30 分以上) が、「Windows 検索」はそれを見つけるのに 20 秒かかります。

検索を最適化し、より高速にするためのいくつかのトリックを知っていますか。

ヒントをありがとう。

4

2 に答える 2

2

あなたは毎回ゼロから検索するのではなく、情報検索の世界にいます-検索エンジンが行うことを実行してください:

  • データのインデックスを作成します(前処理、1回だけ、またはたまに実行されます。これは、ドキュメントの収集が比較的安定していることを前提としています)。検索数と比較してほとんど変化しません)
  • クエリが来るたびに、インデックスを検索して答えをすばやく見つけます。

このアプローチにより、後で関連ドキュメントを返すだけでなく、tf-idfモデルなど、すでに証明されているヒューリスティックを使用して、関連性の高いドキュメントから関連性の低いドキュメントにランク付けすることもできます。

Luceneと呼ばれるオープンソースプロジェクトがあります。これには、実装を支援するPythonバインディングもあります。Luceneは、広く使用されている(そして広くテストされている)情報検索ライブラリです(たとえば、Eclipse検索で使用されます)。


PS情報検索にさらに興味がある場合は、マニングの情報検索入門を読むことをお勧めします。これにより、現場での理解が深まりますが、タスクを適用するだけで必須ではありません。

于 2013-02-21T15:20:23.353 に答える
0

Windows Search SDK + Pythonctypesを使用できます。

于 2013-02-21T15:38:52.200 に答える