【问题标题】:Windows 7 Federated Search - How to make it send search requests to my .net assemblyWindows 7 联合搜索 - 如何使其将搜索请求发送到我的 .net 程序集
【发布时间】:2010-03-05 10:02:26
【问题描述】:

我正在尝试通过联合搜索功能从本地 .net 程序集在 Windows 7 资源管理器中显示搜索结果。 (不是来自网络服务)

我找到了各种教程,但都是针对 Web 服务的。早些时候我认为这是不可能的,但后来我遇到了 StickyNotes 联合搜索连接器。 .OSDX 文件的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<searchConnectorDescription xmlns="http://schemas.microsoft.com/windows/2009/searchConnector">
  <description>Create short handwritten or text notes.</description>
  <isSearchOnlyItem>true</isSearchOnlyItem>
  <includeInStartMenuScope>true</includeInStartMenuScope>
  <templateInfo>
    <folderType>{982725EE-6F47-479E-B447-812BFA7D2E8F}</folderType>
  </templateInfo>
  <simpleLocation>
    <url>StickyNotes://{S-1-5-21-3431700657-2522803235-1547684158-1000}/notes</url>
    <serialized>MBAAAEAFCAAAAAAAADAAAAAAAYUgAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAYKAUAwHAykg1PPWtiyRvmVorPeOnkJkAQEATBAdAkGAjBwaAkHAOBwbAQHAlBwcAoDAvAwLAsHATBQLAEDAtAQNA0CAyAQMA0CAzAANAMDAxAwNAADAwAgNAUDA3AQLAIDA1AgMAIDA4AAMAMDAyAwMAUDAtAQMAUDA0AwNAYDA4AANAEDA1AAOA0CAxAAMAADAwAQfA8CAuBwbAQHAlBwcAAAAAAAAAAAAAAA</serialized>
  </simpleLocation>
</searchConnectorDescription>

这意味着可以将搜索查询转发到本地数据存储/dll/exe

我想使用我的 .net 应用以相同/相似的方式提供搜索结果。我从哪里开始?

见:Windows 7 Federated Search Provider Implementer’s Guide

我的目标是使文档库数据库 (sqlite) 可通过 Windows 资源管理器进行搜索,并在资源管理器中列出来自数据库的文件及其元数据(文件存储在本地)。

【问题讨论】:

  • 我认为我需要的是实现 IOpenSearchSource 接口msdn.microsoft.com/en-us/library/dd378289%28VS.85%29.aspx 信息太少,我不知道如何继续前进
  • 进一步分析发现下的标签是重要的标签。如何定义它以使其指向我的应用程序(这将公开 IOpenSearchSource 接口和 COM 互操作)

标签: search shell windows-7 local-database federated


【解决方案1】:

这个项目似乎在 C# 中完成了这个:http://mossph.codeplex.com/

该项目使用 IContentEnumerator、IFilter 和 IUrlAccessor 实现 ISearchProtocol。一切都从 ContentEnumerator 类的实现传播。

【讨论】:

    【解决方案2】:

    MSDN上的信息已经更新。
    http://msdn.microsoft.com/en-us/library/dd378288%28v=vs.85%29.aspx

    现在列出:

    HRESULT GetResults(
      [in]   HWND hwnd,
      [in]   LPCWSTR pszQuery,
      [in]   DWORD dwStartIndex,
      [in]   DWORD dwCount,
      [in]   REFIID riid,
      [out]  void **ppv
    );
    

    参数

    hwnd [输入]

    类型:HWND
    调用者的窗口句柄。

    pszQuery [输入]

    类型:LPCWSTR
    用户输入的查询。此参数等效于 OpenSearch {searchTerms} 参数,可以为空。

    dwStartIndex [in]

    类型:DWORD
    被请求的第一个结果的索引。等效于 OpenSearch {startIndex} 参数。请参阅下面的备注。

    dwCount [in]

    类型:DWORD
    请求的结果数。等效于 OpenSearch {count} 参数。

    riid [输入]

    类型:REFIID
    被请求的接口的 IID。通常是 IID_IStream。

    ppv [输出]

    类型:无效** RIID 指定类型的接口指针,指向包含 Atom 或 RSS 格式结果的对象。

    至少我们知道一个有效的riid是IID_IStream

    相关信息在这里:http://msdn.microsoft.com/en-us/library/windows/desktop/aa380034%28v=vs.85%29.aspx

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 2012-11-30
      • 2012-09-09
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多