Habilitando seu armazenamento de dados na Pesquisa Federada do Windows

Explica como permitir que seu armazenamento de dados seja acessado por um serviço Web OpenSearch e como evitar possíveis barreiras para fazer isso.

Este tópico é organizado da seguinte maneira:

Condições para aceitação da solicitação de pesquisa

O serviço Web OpenSearch criado em seu servidor Web deve atender aos dois requisitos a seguir:

  • Seja capaz de aceitar uma GET URL consulta do cliente.

  • Permitir que os termos de pesquisa sejam inseridos na URL.

    O exemplo a seguir mostra como um termo de pesquisa pode ser inserido em uma URL.

    https://example.com/search.aspx?query=terms&param=mysearchword
    

Observação

A pesquisa federada não dá suporte ao envio POST de solicitações para um serviço Web.

 

Para obter mais informações sobre como construir uma URL, consulte "Parâmetros de modelo de URL" na criação de um arquivo de descrição OpenSearch na Pesquisa Federada do Windows.

Sintaxe de consulta com suporte

Não há nenhuma sintaxe de consulta específica esperada no Windows 7. O provedor OpenSearch aceita quaisquer termos que o usuário insira na caixa de entrada no Windows Explorer e o codifica na URL. Ele faz isso de acordo com o modelo de URL descrito em "Parâmetros de modelo de URL" na criação de um arquivo de descrição OpenSearch na Pesquisa Federada do Windows.

Os usuários esperam que os termos separados sejam tratados como combinados com o operador AND. Por exemplo, uma consulta para "Microsoft Windows" deve retornar apenas resultados que contenham "Windows" e "Microsoft".

Protocolos de autenticação com suporte

A Pesquisa Federada do Windows dá suporte à autenticação baseada no Windows e pode fornecer credenciais para serviços Web por meio dos seguintes protocolos:

  • NTLM.
  • Kerberos.
  • Básico (somente por HTTPS).
  • Outros SSPs (Provedores de Suporte à Segurança) instalados no Windows que fornecem capacidade de consulta adicional. Consulte a documentação do SDK de Interface SSP para estar atualizado sobre a possível adição de outros SSPs.

Enviar consultas e retornar resultados de pesquisa no RSS ou atom

O provedor OpenSearch é responsável por mapear os valores do elemento XML para as propriedades do sistema Do Windows Shell que podem ser usadas por aplicativos do Windows. Mas você não está limitado aos mapeamentos padrão de elementos RSS ou Atom padrão e pode incluir elementos XML personalizados no namespace do Windows para cada uma das propriedades. Por exemplo, você pode adicionar seus próprios elementos XML personalizados dentro do elemento item para fornecer metadados adicionais ao Windows. Você também pode mapear elementos de outros namespaces XML, como o iTunes

Exemplo de uma saída de feed RSS

A saída do feed RSS de exemplo a seguir retorna um item.

<rss version="2.0" xmlns:media="https://search.yahoo.com/mrss/" xmlns:example="https://example.com/namespace">
   <channel>
      <title>Search Results</title>
      <item>
         <title>An example result</title>
         <link>https://example.com/pictures.aspx?id=01</link>
         <description>This is a test of the emergency search results system. If this were a real emergency result, you'd be reading something more useful.</description>
         <pubDate>Wed, 1 Oct 2008 23:12:00 GMT</pubDate>
         <media:content url="https://example.com/pictures/picture01.jpg" fileSize="212889" type="image/jpeg" height="768" width="1024"/>
         <media:thumbnail url="https://example.com/thumbnails/picture01.jpg" height="120" width="160"/>
         <example:dateTaken>Mon, 22 Sep 2008 23:12:00 GMT</example:dateTaken>
      </item>
   </channel>
</rss>

Para obter informações mais detalhadas sobre o mapeamento de propriedades, consulte as seções "Elementos Estendidos na Pesquisa Federada do WIndows" e "Mapeamentos de Propriedades Personalizadas" na criação de um arquivo de descrição OpenSearch na Pesquisa Federada do Windows.

Mapeamento automático para propriedades do Windows Shell

Dentro dos itens no feed RSS, você pode optar por incluir outros elementos XML que são mapeados automaticamente para as propriedades do sistema do Windows Shell. Para fazer isso, inclua um elemento nomeado segundo a propriedade do Windows Shell e prefixado com o namespace do sistema do Windows Shell. O exemplo a seguir ilustra a declaração win=" http://schemas.microsoft.com/windows/2008/propertynamespace" de namespace e a inclusão de um elemento para o mapeamento win:System.Contact.PrimaryEmailAddressde propriedades:

<rss version="2.0" xmlns:example="https://example.com/schema/2009" xmlns:win="http://schemas.microsoft.com/windows/2008/propertynamespace">
...
   <item>
      <title>Someone</title>
      <win:System.Contact.PrimaryEmailAddress>[email protected]
   </win:System.Contact.PrimaryEmailAddress>
   </item>

O prefixo de namespace usado aqui ("win") é uma sugestão; você pode usar qualquer prefixo. No entanto, você deve usar os nomes exatos de propriedade do Windows Shell e deve incluir o URI (Uniform Resource Identifier) exato, conforme mostrado no exemplo a seguir:

http://schemas.microsoft.com/windows/2008/propertynamespace

Sobre as propriedades do sistema do Windows Shell

O Windows define uma lista completa de Propriedades do Sistema e o formato de tipo de valor necessário para cada propriedade. A documentação da propriedade System.FileExtension Window Shell, por exemplo, especifica que o valor deve conter o ponto inicial (".docx" e não "docx").

Valores de data e hora

O formato de data e hora preferencial é ISO-8601, conforme mostrado no exemplo a seguir:

2008-01-16T 19:20:30:.45+01:00

Os desenvolvedores do .NET devem usar a classe ToString("R") DateTime para gerar o formato correto.

Para obter informações mais detalhadas sobre o mapeamento de propriedades, consulte "Elementos estendidos na pesquisa federada do Windows" na criação de um arquivo de descrição OpenSearch na Pesquisa Federada do Windows.

Noções básicas sobre como o Windows mapeia itens para tipos de arquivo

A pesquisa na interface do usuário do Windows Explorer permite que os usuários tratem os resultados como arquivos quando um item RSS aponta para um arquivo armazenado remotamente. O usuário pode arrastar e soltar itens para a área de trabalho, e a interface do usuário do Windows Explorer exibe o ícone correto e fornece o menu de atalho apropriado. Se o item RSS não apontar para um arquivo armazenado remotamente, o arquivo será tratado como um link e os usuários poderão executar ações nele, como criar um atalho ou abri-lo no navegador.

O fluxograma a seguir mostra como o Windows determina o tipo de arquivo de um item.

fluxograma mostrando caminhos de um item para decisões para tratá-lo como um item de tipo de link da Web ou como um tipo de arquivo

O provedor OpenSearch executa as seguintes etapas para mapear um item para um tipo de arquivo:

  • Identifique se o item deve ser tratado como um arquivo ou um link da Web.
  • Identifique a extensão de nome de arquivo correta a ser usada.

Por exemplo, se o item tiver uma URL de link que usa um caminho do sistema de arquivos (por file:///\\server\share\etc\item.extexemplo), o provedor OpenSearch tratará o link como um arquivo e determinará o tipo pela extensão de nome de arquivo usada no caminho (.ext neste exemplo).

Se o item usar o compartimento RSS padrão ou o elemento MediaRSS media:content , o provedor OpenSearch assumirá que o item é um arquivo e identificará a extensão de nome de arquivo da seguinte maneira:

  • Se a propriedade System.FileExtension do Windows Shell tiver sido mapeada para o item, o provedor usará essa extensão de nome de arquivo.
  • Se a propriedade System.FileExtension do Windows Shell não tiver sido mapeada, o provedor usará o atributo Type especificado no compartimento ou no elemento de conteúdo. Esse elemento deve conter uma MIMEType cadeia de caracteres, como "image/jpeg". Se estiver MIMEType associado a uma extensão de nome de arquivo registrada no computador cliente, o item será considerado um arquivo desse tipo. Se MIMEType não estiver associado a uma extensão de nome de arquivo registrada no computador cliente, o item será tratado como um tipo de hiperlink. O provedor OpenSearch não tenta analisar o atributo url para localizar a extensão de nome de arquivo.
  • Se estiver MIMEType associado a uma extensão de nome de arquivo registrada no computador cliente, o provedor determinará se a extensão de nome de arquivo é um tipo de arquivo Web conhecido (.htm, .html, .asp, .aspx, .php, .swf, .stm). Nesse caso, o tipo de arquivo é considerado como um tipo de link da Web; caso contrário, ele é considerado como um tipo de arquivo. Por exemplo, se estiver MIMEType "text/html" associado à extensão de nome de arquivo .htm, esse item será considerado um link da Web em vez de como um tipo de arquivo .htm.

Evitando possíveis barreiras para habilitar um armazenamento de dados

Alguns armazenamentos de dados não fornecem um serviço Web compatível com OpenSearch, mas ainda podem ser conectados à Pesquisa Federada do Windows. Esses armazenamentos de dados incluem:

  • Índices remotos com métodos de autenticação que não têm suporte na Pesquisa Federada do Windows 7.

    Exemplos incluem autenticação baseada em formulários e outros métodos de autenticação personalizados.

  • Se um repositório público de alto valor tiver APIs web públicas, qualquer pessoa poderá escrever outro serviço Web compatível com OpenSearch e chamar essas APIs nos bastidores.

    Exemplos incluem a Biblioteca do Congresso e bancos de dados de pesquisa médica.

  • Armazenamentos ou índices de dados corporativos proprietários e repositórios de gerenciamento de conteúdo herdados, para os quais pode ser impossível implementar um front-end.

No entanto, há alternativas que podem evitar barreiras para habilitar um armazenamento de dados. Veja a seguir algumas dessas alternativas:

Para escrever um serviço web intermediário quando não se pode modificar o serviço web para a fonte de dados existente, ou quando o serviço web fornece uma API personalizada:

  1. Escreva um serviço Web intermediário que pode aceitar uma consulta do Windows 7.
  2. Conecte-se à fonte de dados e recupere os resultados da consulta.
  3. Reformate os resultados no formato RSS ou Atom.
  4. Retorne os resultados para o cliente do Windows 7.
  5. Observe que, para serviços de dados corporativos e muitos serviços de dados da Internet, talvez seja necessário passar as credenciais do usuário em nome do serviço Web para executar o corte de resultados com base nas permissões do usuário.

Para usar um mecanismo de pesquisa existente quando você não puder habilitar um armazenamento de dados público:

  1. Use um mecanismo de pesquisa público que já dá suporte ao OpenSearch com o RSS. Você pode fazer isso fornecendo aos usuários um arquivo .osdx que tenha um modelo de URL que restrinja os resultados somente aos de seu domínio específico.

  2. Veja o exemplo a seguir de uma descrição do OpenSearch para pesquisar apenas o conteúdo da Ajuda para Windows usando uma consulta em live.com.

    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="https://a9.com/-/spec/opensearch/1.1/">
      <ShortName>Windows Help</ShortName>
      <Description>Search Windows Help using the live.com search engine</Description>
      <Language></Language>
      <Url type="text/html" template="https://windowshelp.microsoft.com/windows/search.aspx?=&amp;qu={searchTerms}"/>
      <Url type="application/rss+xml" template="https://api.search.live.com/rss.aspx?source=web&amp;query={searchTerms} site:windowshelp.microsoft.com&amp;web.count=50"/>
    </OpenSearchDescription>
    

Para usar um servidor de indexação existente que dá suporte ao OpenSearch quando você não pode habilitar armazenamentos ou índices de dados corporativos proprietários:

  1. Selecione um servidor de indexação existente que dê suporte ao OpenSearch para indexar seu conteúdo, como o Servidor de Pesquisa do SharePoint.
  2. Crie um arquivo .osdx que restrinja os resultados do índice do SharePoint somente aos do servidor usando a sintaxe KeyWord dentro do modelo de URL.

Para gravar um repositório de dados do lado do cliente se uma solução somente do lado do servidor não funcionar:

  1. Escreva uma fonte de dados OpenSearch do lado do cliente que esteja entre o provedor do Windows OpenSearch e a fonte de dados externa.
  2. Use a API de Interface IOpenSearchSource no SDK do Windows para criar um arquivo .searchconnector-ms configurado adequadamente por meio do qual o Windows Explorer pode chamar sua implementação com os parâmetros de consulta. Sua implementação pode retornar resultados formatados no formato RSS ou Atom. Isso permite que sua implementação forneça a interface do usuário de autenticação personalizada e conecte-se à fonte de dados usando sua API proprietária.

Observação

Abrir um arquivo .osdx cria um arquivo .searchconnector-ms (conector de pesquisa) no diretório %userprofile%/pesquisa e coloca um link para ele no diretório %userprofile%/links.

 

Recursos adicionais

Para obter informações adicionais sobre como implementar a federação de pesquisa em armazenamentos de dados remotos usando tecnologias OpenSearch no Windows 7 e posteriores, consulte "Recursos adicionais" na Pesquisa Federada no Windows.

Pesquisa Federada no Windows

Introdução à Pesquisa Federada no Windows

Conectando seu serviço Web na Pesquisa Federada do Windows

Criando um arquivo de descrição OpenSearch na Pesquisa Federada do Windows

Seguindo as práticas recomendadas na Pesquisa Federada do Windows

Implantando conectores de pesquisa na Pesquisa Federada do Windows