跟踪“Windows搜索”查询

时间:2010-06-29 21:49:37

标签: windows-search data-tracing

我可以通过注册表(见下文)启用 Windows Search 的日志记录,但这只会捕获通过 Windows Search 的默认用户界面发送的查询。我想捕获 Outlook 2003 Outlook 2007 OneNote 2007 或访问SystemIndex的任何其他应用程序使用的查询。< / p>

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

我想要做的是分析这些查询,以便更好地了解如何为我用于搜索我的代码库(物理文件)的个人搜索实用程序(WinForms / WPF / ADO.NET / OleDb)构建查询系统)。

如何跟踪在 Windows搜索的SystemIndex上执行的所有查询?

3 个答案:

答案 0 :(得分:0)

如果您真的想要捕获对SystemIndex的所有访问,那么这将是非常高的顺序,因为可以访问它multiple ways

如果我们忽略了一点,并专注于你的另一个目标:

  

我想要做的是分析这些查询以获得一个   更好地了解如何建立   查询我的个人搜索工具

然后我会查看ISearchQueryHelper界面。

  

ISearchQueryHelper接口

     

提供构建查询的方法   从用户输入,将查询转换为   Windows搜索SQL,并获取一个   用于初始化a的连接字符串   连接到Window Search索引。

该界面的一种方法是GenerateSQLFromUserQuery,它可以帮助你。

  

GenerateSQLFromUserQuery

     

生成结构化查询语言(SQL)   基于客户端提供的查询进行查询   以Advanced表示的字符串   查询语法(AQS)或自然查询   语法(NQS)。

答案 1 :(得分:0)

系统索引实现为OLE DB源。您可以从ISearchQueryHelper::get_ConnectionString提供的连接字符串中找到数据源。我一直在寻找一种监控OLE DB源的方法,但到目前为止还没有找到。

OLE DB归结为默认情况下存在于Windows.edb个人资料文件夹中的名为\All Users\Application Data\Microsoft\Search\Data\Applications\Windows\的{​​{3}}(ESE)文件。

所有ESE文件均由ESENT.DLL管理。可以挂钩此DLL并跟踪查询。使用Extensible Storage EngineStraceNT

等程序可以进行挂钩和记录

经过几个小时的搜索,似乎没有更简单的方法来获取所有Windows搜索查询的日志。由于学习查询语法是您的目标,因此在其他地方寻找学习辅助工具可能更为简单,例如使用默认的Windows搜索UI和使用您已了解的查询日志。使用ISearchQueryHelper接口将ADS和NDS查询转换为SQL也可能有所帮助。

答案 2 :(得分:0)

我相信答案就在这里,但没有时间尝试。