I am trying to display search results in the windows 7 explorer thru the federated search feature, from a local .net assembly. (not from a web service)
I have found various tutorials, but all of them are for web services. Earlier I thought that it was not possible but then, I came across the StickyNotes federated search connector. The contents of the .OSDX file are:
<?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>
This means that it is possible to forward a search query to a local datastore/dll/exe
I would like to use my .net app to provide search results in the same/similar way. Where do I start?
See: Windows 7 Federated Search Provider Implementer’s Guide
My aim is to make a documents library database (sqlite) searchable via the windows explorer and list the files and their meta data from the DB in explorer (files are stored locally).
This project appears to accomplish this in C#: http://mossph.codeplex.com/
The project implements ISearchProtocol using IContentEnumerator, IFilter and IUrlAccessor. Everything propogates from an implement of a ContentEnumerator class.
The info on MSDN has been updated.
http://msdn.microsoft.com/en-us/library/dd378288%28v=vs.85%29.aspx
It now lists:
HRESULT GetResults(
[in] HWND hwnd,
[in] LPCWSTR pszQuery,
[in] DWORD dwStartIndex,
[in] DWORD dwCount,
[in] REFIID riid,
[out] void **ppv
);
Parameters
hwnd [in]
Type: HWND
The window handle of the caller.
pszQuery [in]
Type: LPCWSTR
The query as entered by the user. This parameter is equivalent to the OpenSearch {searchTerms} parameter and may be empty.
dwStartIndex [in]
Type: DWORD
The index of the first result being requested. Equivalent to the OpenSearch {startIndex} parameter. See Remarks below.
dwCount [in]
Type: DWORD
The number of results being requested. Equivalent to the OpenSearch {count} parameter.
riid [in]
Type: REFIID
The IID of the interface being requested. Typically IID_IStream.
ppv [out]
Type: void** An interface pointer, of type specified by RIID, to the object containing the results in Atom or RSS format.
At least we know that a valid riid is IID_IStream
The info for that is here: http://msdn.microsoft.com/en-us/library/windows/desktop/aa380034%28v=vs.85%29.aspx
来源:https://stackoverflow.com/questions/2385851/windows-7-federated-search-how-to-make-it-send-search-requests-to-my-net-asse