3

レジストリを介してWindowsSearchのログを有効にすることはできますが(以下を参照)、これはWindowsSearchのデフォルトのユーザーインターフェイスを介して送信されたクエリのみをキャプチャしますOutlook 2003Outlook 2007OneNote 2007、またはにアクセスするその他のアプリケーションで使用されるクエリをキャプチャしたいSystemIndex

HKEY_CURRENT_USER\Software\Microsoft\Windows Desktop Search\DS\WriteLog[DWORD]0|1

私がやりたいのは、これらのクエリを分析して、コードライブラリ(物理ファイルシステム)の検索に使用する個人用検索ユーティリティ(WinForms / WPF / ADO.NET / OleDb)のクエリを作成する方法をよりよく理解することです。

Windows SearchのSystemIndexで実行されたすべてのクエリを追跡するにはどうすればよいですか?

4

3 に答える 3

0

答えはここにあると思いますが、試してみる時間がありませんでした。

于 2010-12-20T22:49:21.903 に答える
0

システム インデックスは、OLE DB ソースとして実装されます。ISearchQueryHelper::get_ConnectionStringによって提供される接続文字列からデータ ソースを見つけることができます。OLE DB ソースを監視する方法を探していましたが、今のところ何も見つかりませんでした。

OLE DB は、プロファイル フォルダーに既定で存在する、という名前のExtensible Storage Engine (ESE) ファイルに要約されます。Windows.edb\All Users\Application Data\Microsoft\Search\Data\Applications\Windows\

すべての ESE ファイルは ESENT.DLL によって管理されます。この DLL をフックしてクエリをトレースできる場合があります。StraceNTxptrussなどのプログラムを使用すると、フックとロギングが可能です。

数時間検索した後、すべての Windows Search クエリのログを取得するより簡単な方法はないようです。クエリ構文を学習することが目標であるため、既定の Windows Search UI を使用したり、既に知っているクエリ ログを使用したりするなど、他の学習支援を探す方が簡単な場合があります。インターフェイスを使用して、ADS および NDS クエリを SQL に変換してみるのも役立つ場合がありISearchQueryHelperます。

于 2010-07-21T21:19:19.897 に答える
0

SystemIndex へのすべてのアクセスを本当にキャプチャしたい場合は、複数の方法でアクセスできるため、非常に困難です。

それを少し無視して、他の目標に集中すると、次のようになります。

私がやりたいのは、これらのクエリを分析して、個人用検索ユーティリティのクエリを作成する方法をよりよく理解することです

次に、ISearchQueryHelperインターフェイスを調べます。

ISearchQueryHelper インターフェイス

ユーザー入力からクエリを作成し、クエリを Windows Search SQL に変換し、接続文字列を取得して Window Search インデックスへの接続を初期化するためのメソッドを提供します。

そのインターフェイスの 1 つのメソッドはGenerateSQLFromUserQueryで、これが役立つ場合があります。

GenerateSQLFromUserQuery

Advanced Query Syntax (AQS) または Natural Query Syntax (NQS) で表現されたクライアント提供のクエリ文字列に基づいて、構造化クエリ言語 (SQL) クエリを生成します。

于 2010-07-15T15:59:28.513 に答える