Windows 7 Federated Search - Как заставить его отправлять поисковые запросы в мою сборку - PullRequest
4 голосов
/ 05 марта 2010

Я пытаюсь отобразить результаты поиска в проводнике 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 ]

2 голосов
/ 14 ноября 2012

Этот проект, кажется, выполняет это в C #: http://mossph.codeplex.com/

В проекте реализован протокол ISearchProtocol с использованием IContentEnumerator, IFilter и IUrlAccessor. Все распространяется от реализации класса ContentEnumerator.

1 голос
/ 15 мая 2014

Информация о 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 [in]

Тип: HWND
Оконная ручка звонящего.

pszQuery [in]

Тип: LPCWSTR
Запрос, введенный пользователем. Этот параметр эквивалентен параметру OpenSearch {searchTerms} и может быть пустым.

dwStartIndex [in]

Тип: DWORD
Индекс первого запрашиваемого результата. Эквивалентен параметру OpenSearch {startIndex}. См. Примечания ниже.

dwCount [in]

Тип: DWORD
Количество запрашиваемых результатов. Эквивалентен параметру OpenSearch {count}.

riid [in]

Тип: REFIID
IID запрашиваемого интерфейса. Обычно IID_IStream.

PPV [out]

Тип: void ** Указатель интерфейса типа, указанного в RIID, на объект, содержащий результаты в формате Atom или RSS.

По крайней мере, мы знаем, что действительный рид это IID_IStream

Информация для этого здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/aa380034%28v=vs.85%29.aspx

...