Contents

Windows Search の使用をやめ、代わりに独自の検索を作成しました

<本文>/images/custom-windows-search-replacement.jpg

人生の中で、急いで文書を見つけようとする瞬間が必ずありますが、その文書がダウンロード フォルダーのどこかに埋もれてしまい、間に合わないことがあります。ダウンロード、ドキュメント、OneDrive フォルダーにまたがってファイルを検索するのは、常に面倒な作業です。

時間が経つにつれて、ダウンロード フォルダーは、サイズではなく、その中にあるファイルの数で見て、システム上で最大のフォルダーの 1 つになりました。私は毎日、写真、PDF、その他の仕事関連のファイルをダウンロードします。夕方になると、リストの数が増え、以前にダウンロードしたものを見つけるのが困難になります。

Windows Search は、ファイルを見つけるプロセスを容易にするはずです。しかし、それは奇妙な方法で機能します。場合によっては、必要なファイルが即座に見つかることもあります。また、検索を続けても実際には見つからない場合もあります。結果は常に一貫しているとは限りません。

この矛盾と不満から、ファイル検索が実際にどのように機能するのか興味が湧きました。この好奇心が最終的に、Windows Search を自分で構築したシステムに置き換える別のことを試すようになりました。

/images/local-whisper-model.jpg

関連

Local Whisper は、サーバーに一言も送信せずに、1 時間の会議を数分で文字起こしします。

最新のハードウェアにより、ローカル AI は驚くほど実用的になります。

Windows 検索が役に立たなくなった場合

検索が信頼できなくなった場合

/images/windows-search-inconsistency.jpg

Windows Search の動作に一貫性がありません。通常、検索バーに数文字を入力するだけでファイルを見つけることができます。オペレーティング システムはそのように設計されていますが、Windows Search では一貫した結果が得られません。検索結果が即座に表示される場合もあります。また、時間がかかりすぎるか、ファイルがまったく見つからない場合もあります。時間の経過とともにフォルダーのサイズが大きくなるにつれて、信頼できる結果を得ることが難しくなります。

私は日々のスケジュールの中で、画像、スクリーンショット、PDF、プロジェクトファイルなど、さまざまな種類のファイルを扱います。その数は急速に増加する可能性があります。場合によっては、一日の終わりまでにファイル数が数百に達することもあります。数日前にダウンロードしたファイルを手動で見つけるのは不可能になります。それらを見つけるには Windows Search に依存する必要があります。最新のファイルについては、インデックス作成を待つ必要があります。場合によっては、それらを見つけるために複数回検索を実行する必要があることがあります。簡単に言うと、通常の修正をすべて試しましたが、不一致は常に一貫しています。

最後に、Windows Search のトラブルシューティングを再度試みるのではなく、別のルートを選択し、問題は検索システム自体にあるのではないかと考え始めました。

小規模な Debian サーバーを検索脳に変える

1 台の小型サーバーがすべてを変えました

/images/meilisearch-logs.jpg

さまざまな検索ツールを調査しているときに、私が観察したことの 1 つは、検索ツールがファイルのインデックス作成に依存しているということでした。インデクサーは検索ツールの中心であり、特定のオペレーティング システムに関連付けられていません。小規模なサーバーでも同じ作業を実行できます。この認識が私にカスタム インデクサーを構築する動機を与えました。

私はホームラボサーバーを所有しています。ベアメタル Debian 上で動作します。インデクサーのセットアップを構築するのに Linux サーバーよりも適した場所はどこでしょうか?サーバーには、軽量のインデクサーをホストするのに十分なリソースがあります。その唯一のタスクは、インデクサーをホストすることです。ファイルは Windows PC に残りますが、フォルダーは SMB を使用してサーバーにマウントされます。サーバーはそれらをスキャンするだけです。

フォルダーをスキャンし、ファイル名を記録し、名前、パス、場所などのメタデータを保存する小さな Python スクリプトを作成しました。 Python スクリプトを 10 分ごとに実行して新しいファイルにインデックスを付ける簡単な cron ジョブを設定しました。増分インデックス作成や inotify や fswatch などのリアルタイム ファイル ウォッチャーなど、より高度なソリューションも利用できますが、これらのアプローチは大規模な環境でより役立ちます。


import osimport reimport meilisearchclient = meilisearch.Client("http://127.0.0.1:7700")index = client.index("files")# Scanning mounted SMB paths for metadatafor base_path in "/mnt/windows/Downloads", "/mnt/windows/Documents":

 for root, dirs, files in os.walk(base_path):


 docs = {




 "id": re.sub(r'[^a-zA-Z0-9_-', '_', os.path.join(root, f)),




 "name": f,




 "path": os.path.join(root, f),




 "folder": root


 } for f in files]






# Batch upload to Meilisearch


 index.add_documents(docs)

最後に、インデックス付きメタデータを保存するために、Docker で実行される軽量の検索エンジンである Meilisearch をインストールしました。高速な検索クエリ向けに設計されており、家庭環境にとって実用的なソリューションです。その時点では、作業用のファイル インデックスと検索エンジンがありました。私が必要としていたのは、実際にそれを使用するためのモダンでシンプルな方法でした。

実際に高速に感じられる検索インターフェイスを構築する

使いやすくしたインターフェース

技術的には、Meilisearch によって公開された API を備えた動作するバックエンドがすでにありました。私が必要としていたのは、検索エンジンと対話するための、軽量でモダンで、すぐに使えるインターフェースでした。

私のこれまでのプロジェクトに詳しい方は、私が React アプリケーションの大ファンであることをご存じかもしれません。 Vite と Tailwind を組み合わせると、1 時間以内に最新のインターフェイスを構築できます。このインターフェイスにも同じ技術スタックを選択しました。検索バーを備えた最新のインターフェイスが必要でした。それ以上でもそれ以下でもありません。

前述したように、Meilisearch はポート 7700 で単純な API を公開しています。これを使用してインターフェイスを検索エンジンに接続しました。そのときの流れはシンプルでした。検索バーにクエリを入力すると、アプリがそれを Meil​​isearch に送信しました。 API は、一致するファイルの正確なパスを返しました。次に、インターフェイスは保存されたパスを PC 上で使用可能なファイル パスに変換しました。

実践的なファイル検索とツールのヒントについては、ニュースレターを購読してください

実用的で実装可能なチュートリアルと、高速ローカル ファイル検索に関する詳細なツール (インデックス作成アプローチ、Meilisearch 構成、Python インデックス作成スクリプト、シンプルな PWA インターフェイス) を入手します。この設定を調べて再現するには、ニュースレターを購読してください。

アップデートを取得する

購読すると、ニュースレターとマーケティング電子メールの受信に同意し、利用規約とプライバシー ポリシーに同意したものとみなされます。いつでも購読を解除できます。

アクセスしやすくするために、プログレッシブ Web アプリ (PWA) を実装しました。よりネイティブ アプリのようなエクスペリエンスが提供されるようになりました。アプリを Windows タスクバーに固定し、ワンクリックでアクセスできるようになりました。その時点で、それは毎日使える実用的なツールになりました。

ファイル検索の現在の様子

検索はミリ秒単位で行われるようになりました

/images/custom-file-search-app-result.jpg

Windows Search を振り返ってみると、このカスタム ツールは大幅な改善です。タスクバーから 1 回クリックするだけで、検索ツールを開くことができます。クエリを入力し始めると、最初の文字からファイルが検索され始めます。結果はほぼ即座に表示され、ほとんどの場合は数ミリ秒以内に表示されます。

結果として、実際のファイル名、ファイル パス、ファイルの種類などの有用な情報が返されます。専用アプリでファイルを開く機能もあります。画像は Windows フォトで開き、PDF はブラウザで開き、ZIP ファイルはエクスプローラーで開きます。小さな実験として始まったものが、今では私が毎日依存しているツールとなった。

/images/python-app-local-llm-feature.jpg

関連

ローカル LLM とモデル コンテキスト プロトコル (MCP) のみを使用してフルスタック Python アプリを構築しました

建築は規模に勝ります。毎回。

ようやく意味のある検索

Windows Search に対する不満があったため、私はそれに代わるものを独自に構築することにしました。結果は予想以上に信頼できるものでした。検索インデックスがどのように機能するかを理解する実験により、最終的には組み込みの検索ツールが完全に置き換えられました。私の毎日のワークフローに変化をもたらすために必要なのは、小さな Python スクリプト、軽量の検索エンジン、シンプルなインターフェイスだけでした。フォルダーを探し回る代わりに、探しているものを一貫して見つけてくれるシステムを利用できるようになりました。

*️⃣ 出典リンク:

Local Whisper は、サーバーに一言も送信することなく、1 時間の会議を数分で文字起こしします 、オペレーティング システムは設計されており、検索ツールはインデックス ファイルに依存し、ベアメタル Debian 上で実行されます。 ]( https://www.valnetinc.com/en/privacy-policy) 、ローカル LLM とモデル コンテキスト プロトコル (MCP) のみを使用してフルスタック Python アプリを構築しました 、