Windows 7 Federated Search - как заставить его отправлять поисковые запросы в мою сборку.net
Я пытаюсь отобразить результаты поиска в проводнике Windows 7 через функцию федеративного поиска из локальной сборки.net. (не из веб-службы)
Я нашел различные учебные пособия, но все они для веб-служб. Раньше я думал, что это невозможно, но потом наткнулся на соединитель федеративного поиска 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
Моя цель - сделать базу данных библиотеки документов (sqlite) доступной для поиска через проводник Windows и перечислить файлы и их метаданные из БД в проводнике (файлы хранятся локально).
2 ответа
Этот проект, кажется, выполняет это в C#: http://mossph.codeplex.com/
Проект реализует протокол ISearch с использованием IContentEnumerator, IFilter и IUrlAccessor. Все распространяется от реализации класса ContentEnumerator.
Информация на 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 [in]
Тип: LPCWSTR
Запрос, введенный пользователем. Этот параметр эквивалентен параметру OpenSearch {searchTerms} и может быть пустым.
dwStartIndex [in]
Тип: DWORD
Индекс первого запрашиваемого результата. Эквивалентен параметру OpenSearch {startIndex}. Смотрите примечания ниже.
dwCount [в]
Тип: DWORD
Количество запрашиваемых результатов. Эквивалентен параметру OpenSearch {count}.
Рид [в]
Тип: Рефид
IID запрашиваемого интерфейса. Обычно IID_IStream.
PPV [выход]
Тип: void** Указатель интерфейса типа, указанного в RIID, на объект, содержащий результаты в формате Atom или RSS.
По крайней мере, мы знаем, что действительный рид IID_IStream
Информация для этого здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/aa380034%28v=vs.85%29.aspx