2010-03-05 4 views
4

J'essaie d'afficher les résultats de recherche dans l'explorateur de Windows 7 à travers la fonction de recherche fédérée, à partir d'un .net local. (pas à partir d'un service Web)Windows 7 Federated Search - Comment faire pour envoyer des requêtes de recherche à mon .net assembly

J'ai trouvé divers didacticiels, mais tous sont destinés aux services Web. Auparavant, je pensais que ce n'était pas possible, mais ensuite, je suis tombé sur le connecteur de recherche fédérée StickyNotes. Le contenu du fichier .OSDX sont:

<?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> 

Cela signifie qu'il est possible de transmettre une requête de recherche à un datastore local/dll/exe

Je voudrais utiliser mon application .NET pour fournir recherche les résultats de la même manière. Où est-ce que je commence?

Voir: Windows 7 Federated Search Provider Implementer’s Guide

Mon but est de faire un document de base de données bibliothèque (sqlite) consultable via l'explorateur Windows et la liste des fichiers et leurs méta-données de la base de données dans l'explorateur (les fichiers sont stockés localement).

+0

Je pense que j'ai besoin de mettre en œuvre IOpenSearchSource Interface http://msdn.microsoft. com/fr-fr/library/dd378289% 28VS.85% 29.aspx Je ne sais pas comment avancer avec cela car il y a trop peu d'informations –

+0

Une analyse plus poussée révèle que l'étiquette sous est la plus importante. Comment puis-je le définir de telle sorte qu'il pointe vers mon application (ce qui exposerait l'interface IOpenSearchSource à l'interopérateur COM) –

Répondre

2

Ce projet semble arriver en C#: http://mossph.codeplex.com/

Le projet met en œuvre à l'aide ISearchProtocol IContentEnumerator, IFilter et IUrlAccessor. Tout se propage à partir d'un outil d'une classe ContentEnumerator.

1

Les informations sur MSDN ont été mises à jour.
http://msdn.microsoft.com/en-us/library/dd378288%28v=vs.85%29.aspx

Il énumère maintenant:

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

Paramètres

hwnd [en]

Type: HWND
La poignée de la fenêtre de l'appelant.

pszQuery [en]

Type: LPCWSTR
La requête en entrée par l'utilisateur. Ce paramètre est équivalent au paramètre OpenSearch {searchTerms} et peut être vide.

dwStartIndex [en]

Type: DWORD
L'indice du premier résultat demandé. Équivalent au paramètre OpenSearch {startIndex}. Voir les remarques ci-dessous.

dwCount [en]

Type: DWORD
Le nombre de résultats demandé. Équivalent au paramètre OpenSearch {count}.

riid [en]

Type: REFIID
IID de l'interface demandée. Typiquement IID_IStream.

VPP [out]

Type: vide ** Un pointeur d'interface, de type spécifié par riid, à l'objet contenant les résultats au format Atom ou RSS.

Au moins nous savons qu'un riid valide est IID_IStream

Les informations de c'est ici: http://msdn.microsoft.com/en-us/library/windows/desktop/aa380034%28v=vs.85%29.aspx

Questions connexes