インデックスと検索ディレクトリ

インデックスと検索ディレクトリ

多くのテキストファイルを含むディレクトリツリーがあります。すべてのファイルをすばやく検索できるように、これらすべてのファイルのフルテキスト(特定のファイル拡張子を持つファイルは無視)を索引付けしたいと思います。

フルホームディレクトリやシステム全体をインデックス化したくありません。この特定のディレクトリだけをインデックス化したいと思います。

インデックスは常に更新され、内部ファイルの変更を自動的に検出する必要があります。

これを達成するためにどのツールを使用できますか?

答え1

「ファイルの変更を自動的に検出する」という要件に加えて、GNUはこれを行うことができます。id-utils。これは、クエリツールや他のツールで使用するためにmkid呼び出されるバイナリデータベースファイルを構築するためのツールを提供します。IDlid

Id-utilsはプログラミング指向であり、設定可能なファイルに基づくid-lang.mapサフィックスでファイルタイプを識別します。ファイルのトークンを正しく処理するためにサポートしている各タイプに別々のスキャナーがあります。mkid認識できないファイル形式の代替スキャナとして使用できるテキストファイル用の代替スキャナがあります。mkidid-lang.mapのファイルを直接ポイントすると、テキストスキャナを使用してすべてを処理すると思います。

mkidインデックスツリーは非常に高速で、クエリは非常に高速です。

ソースコードナビゲーションのためにVimと統合しました。 cscopeなどの別々のツールを使用するよりも便利です。次の 2 つの設定を使用します。

:set grepprg=lid\ --regex\ --result=grep\ '$*'\ \\\|\ sort\ -u\ -t\ :\ -k\ 1,1\ -k\ 2,2n
:set grepformat=%f:%l:%m

Vimコマンドの基礎としてIDデータベースを使用できます:grep。たとえば、見つかった:grep fooすべての場所の閲覧可能なリストが表示されます。foo

sort一致は興味深い順序で出力されるため、上記の定義の手順がgrepprg必要です。lid内部的にハッシュやその他のタスクを実行します。

関連情報