Pesquisar personalizações para o SharePoint
Observação
A página a seguir diz respeito a sites clássicos no SharePoint Online. Esses recursos não têm suporte em sites modernos do SharePoint. Para implementar funcionalidades semelhantes nas web parts de pesquisa modernas do SharePoint modernas do SharePoint em: https://microsoft-search.github.io/pnp-modern-search/
Crie cenários de pesquisa personalizados do SharePoint e do SharePoint Online usando um diretório de site baseado em pesquisa, resultados de pesquisa personalizados ou portabilidade de configuração de pesquisa.
Diretório de site baseado em pesquisa
A pesquisa do SharePoint permite criar um diretório de site baseado em pesquisa sem escrever nenhum código personalizado.
Para criar um diretório do site:
- Crie os modelos de exibição do diretório do site.
- Defina o tipo de resultado do diretório do site.
- Crie a página de resultados.
- Edite as propriedades da Web Part resultados.
Observação
O procedimento a seguir usa os modelos de exibição relacionados ao site sem modificação. Se você quiser alterar a forma como os resultados do diretório do site são exibidos, modifique os modelos de exibição que você cria.
Para criar os modelos de exibição do diretório do site
Abra a unidade de rede mapeada para a Galeria de Páginas Mestras. Para obter mais informações, consulte Mapear uma unidade de rede para a Galeria de Páginas Mestras do SharePoint.
Faça cópias dos arquivos HTML do modelo de exibição que melhor mapeiem o que você está tentando fazer. Para o cenário do diretório do site, isso será Item_Site.html e Item_Site_HoverPanel.html. Ambos os arquivos estão localizados na
\Display Templates\Search
pasta na unidade de rede mapeada.Renomeie as cópias que você fez dos arquivos Item_SiteDirectory.html e Item_SiteDirectory_HoverPanel.html, conforme mostrado.
Abra o arquivo Item_SiteDirectory.html e faça as seguintes alterações:
- Altere o
<title>
valor da marca do Item do Site para o Diretório do Site. - Altere a primeira
<div>
marca após a marca de abertura<body>
de<div id="Item_Site">
para<div id="Item_SiteDirectory">
. - Altere o nome do arquivo JavaScript do modelo de painel de
var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Site_HoverPanel.js";
mouse paravar hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_SiteDirectory_HoverPanel.js";
.
- Altere o
Abra o arquivo Item_SiteDirectory_HoverPanel.html e faça as seguintes alterações:
- Altere a
<div>
marca seguindo a marca de abertura<body>
de<title>Site Hover Panel Test</title>
para<title>Site Directory Hover Panel</title>
. - Altere a
<title>
marca de<div id="Item_Site_HoverPanel">
para<div id="Item_SiteDirectory_HoverPanel">
.
- Altere a
Para definir o tipo de resultado do diretório do site
Vá para Configurações> do SitePesquisar>Tipos de Resultado e escolha Novo Tipo de Resultado.
Nomeie seu novo tipo de resultado Diretório básico do site.
Na caixa Como esses resultados devem ser? selecione Diretório do Site.
Escolha Salvar.
Para criar a página de resultados
- No menu Configurações do Site , selecione Conteúdo do site.
- Selecione Páginas.
- Na biblioteca Páginas, selecione Arquivos>Página Novo Documento>.
- Na página Criar Página , especifique o Diretório do Site para Título e o sitedirectory para Nome da URL.
- Escolha Criar.
Para editar as propriedades da Web Part de Resultados
Na página Diretório do Site , escolha Configurações>Editar Página.
Na Web Part de Resultados de Pesquisa, escolha o menu Web Part e escolha Editar Web Part.
No painel ferramenta Web Part, escolha Alterar consulta para abrir o Construtor de Consultas.
No campo Texto de consulta, insira o seguinte:
ContentClass:STS_Web OR ContentClass:STS_Site path:http://<YourServer>
Escolha Testar consulta para confirmar se a sintaxe está correta. O painel Visualização de Resultados da Pesquisa deve exibir subsites no site especificado para o caminho no texto Consulta.
Escolha OK para fechar o Construtor de Consultas.
Em Modelos de Exibição, selecione Usar tipos de resultado para exibir itens.
Selecione Diretório de Site Básico no tipo Resultado para lista de itens .
Na seção Aparência , altere o Título para Sites aos quais tenho acesso.
Escolha OK para salvar as alterações na Web Part e fechar o painel de ferramentas da Web Part.
A figura a seguir mostra um exemplo de uma página de diretório de site baseada em pesquisa.
Resultados de pesquisa personalizados
A pesquisa personalizada é quando você mostra os resultados da pesquisa direcionados ao usuário que está enviando a solicitação de pesquisa. Esta seção descreve alguns cenários para pesquisa personalizada e como você pode implementá-los.
Seu cenário de notícias
Nesse cenário, você cria um suplemento de pesquisa que mostra conteúdo relevante, como notícias e eventos, direcionado ao usuário.
Cenário de pesquisa personalizado Suas Notícias
Para implementar o cenário de notícias, use a Web Part resultados da pesquisa do SharePoint e modelos de exibição padrão para exibir as informações de notícias, incluindo título, descrição e imagem de roll-up. Mostre os dez primeiros itens de notícias. Quando o usuário escolhe a imagem de roll-up, o título ou o link Leia Mais, a página de artigo de notícias é carregada.
Como alternativa, você pode criar um suplemento de pesquisa usando a API de consulta (CSOM ou REST). Você pode tornar o número de itens de notícias a serem exibidos configuráveis usando as propriedades de suplemento de pesquisa.
Outra opção é usar a API de consulta para adicionar o código da API de consulta que recupera os resultados da pesquisa diretamente ao layout da página.
Para exibir as informações de eventos e notícias específicas para o usuário
- Modifique a consulta para filtrar os resultados de notícias e eventos com base em propriedades do perfil do usuário, como unidade de negócios, região e idioma.
- Recupere as propriedades Título, Descrição, imagem de rollup e URL para os itens de notícias ou eventos.
- Implemente a lógica de classificação para as notícias e eventos combinados com base na propriedade LastModifiedDate .
Cenário de eventos futuros
Nesse cenário, o suplemento de pesquisa mostra eventos relevantes direcionados ao usuário.
Cenário de pesquisa personalizado Eventos Futuros
Para implementar esse cenário, você pode configurar a Web Part de Resultados da Pesquisa do SharePoint para alterar a consulta para recuperar apenas as informações de evento futuras. Para fazer isso, especifique ContentClass:STS_ListItem_Events
para o texto de consulta da Web Part. Para alterar a forma como os resultados do evento são exibidos, crie modelos de exibição personalizados para renderizar as informações do evento.
Você pode modificar o modelo de exibição do item para que, quando o usuário escolher a imagem, o título ou o link Leia Mais, a página de informações do evento seja carregada. Você também pode modificar o modelo de exibição de controle para que, quando o usuário escolher Ver Mais, os próximos dez resultados de evento sejam exibidos na Web Part.
Você também pode criar um suplemento de pesquisa que usa a API de consulta para recuperar os resultados do evento. Você pode configurar o suplemento de pesquisa para mostrar, por padrão, apenas dez dos eventos futuros mais recentes, mas tornar essa configuração configurável por meio das propriedades de suplemento de pesquisa.
Cenário de notícias em destaque
Nesse cenário, o suplemento de pesquisa mostra os resultados da pesquisa como conteúdo em destaque direcionado aos usuários em locais como intranet corporativa e páginas de destino divisionais. Você pode implementar isso com uma parte de suplemento que contém um plug-in jQuery com HTML que usa o serviço REST de pesquisa ou o CSOM de consulta para obter os resultados da pesquisa do SharePoint e exibir os resultados.
Exemplo de código para pesquisa personalizada
A pesquisa de personalização resulta em um exemplo de Suplemento do SharePoint mostra um exemplo de pesquisa básico e um exemplo de resultados de pesquisa personalizado que usa o CSOM da consulta de pesquisa. O exemplo de pesquisa básico permite que o usuário forneça um filtro de pesquisa a ser usado para uma pesquisa em todo o locatário. Os sites são pesquisados com base nesse filtro fornecido pelo usuário.
O exemplo primeiro obtém o contexto do SharePoint usando a classe SharePointContextProvider .
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
Em seguida, ele cria a consulta com base no que o usuário inseriu. Ele restringe a consulta a coleções de sites e, em seguida, chama o método ProcessQuery , passando o contexto e a consulta na chamada de método. Em seguida, ele retorna os resultados do ProcessQuery como uma tabela de resultados, que é analisada pelo método FormatResults .
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
string query = searchtext.Text + " contentclass:\"STS_Site\"";
ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
lblStatus1.Text = FormatResults(results);
}
O método ProcessQuery cria um objeto KeywordQuery que representa a consulta de pesquisa.
KeywordQuery keywordQuery = new KeywordQuery(ctx);
keywordQuery.QueryText = keywordQueryValue;
keywordQuery.RowLimit = 500;
keywordQuery.StartRow = 0;
keywordQuery.SelectProperties.Add("Title");
keywordQuery.SelectProperties.Add("SPSiteUrl");
keywordQuery.SelectProperties.Add("Description");
keywordQuery.SelectProperties.Add("WebTemplate");
keywordQuery.SortList.Add("SPSiteUrl", Microsoft.SharePoint.Client.Search.Query.SortDirection.Ascending);
Em seguida, a consulta de pesquisa é enviada ao SharePoint chamando o método ExecuteQuery_Client(Consulta). Os resultados são retornados ao objeto ClientResult<T> .
SearchExecutor searchExec = new SearchExecutor(ctx);
ClientResult<ResultTableCollection> results = searchExec.ExecuteQuery(keywordQuery);
ctx.ExecuteQuery();
O método FormatResults itera por meio dos resultados e constrói uma tabela HTML para exibir os valores de resultado.
string responseHtml = "<h3>Results</h3>";
responseHtml += "<table>";
responseHtml += "<tr><th>Title</th><th>Site URL</th><th>Description</th><th>Template</th></tr>";
if (results.Value[0].RowCount > 0)
{
foreach (var row in results.Value[0].ResultRows)
{
responseHtml += "<tr>";
responseHtml += string.Format("<td>{0}</td>", row["Title"] != null ? row["Title"].ToString() : "");
responseHtml += string.Format("<td>{0}</td>", row["SPSiteUrl"] != null ? row["SPSiteUrl"].ToString() : "");
responseHtml += string.Format("<td>{0}</td>", row["Description"] != null ? row["Description"].ToString() : "");
responseHtml += string.Format("<td>{0}</td>", row["WebTemplate"] != null ? row["WebTemplate"].ToString() : "");
responseHtml += "</tr>";
}
}
responseHtml += "</table>";
O método ResolveAdditionalFilter verifica "Apptest". Se ele for encontrado, uma lista de modelos de site de qualquer tipo será retornada nos resultados da pesquisa. Se ele não for encontrado, apenas modelos da Web STS serão retornados nos resultados da pesquisa.
private string ResolveAdditionalFilter(string aboutMeValue)
{
if (!aboutMeValue.Contains("AppTest"))
{
return "WebTemplate=STS";
}
return "";
}
Em seguida, o exemplo constrói a consulta e chama os métodos ProcessQuery e FormatResults para recuperar, formatar e exibir os resultados da pesquisa.
string query = "contentclass:\"STS_Site\" " + templateFilter;
ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
lblStatus2.Text = FormatResults(results);
Você pode ver a interface do usuário para este exemplo na figura a seguir.
Portabilidade de configuração de pesquisa
No SharePoint e no SharePoint Online, você pode exportar e importar configurações de configuração de pesquisa personalizadas entre coleções de sites e sites. Você só pode exportar configurações de configuração de pesquisa personalizadas no nível do aplicativo serviço Pesquisa (SSA) e precisa usar as APIs de pesquisa para fazer isso de forma programática. A opção de exportação não está disponível na interface do usuário do SharePoint.
As configurações de pesquisa Importação e Exportação para SharePoint Online mostram como importar e exportar configurações de pesquisa para um site do SharePoint Online usando o CSOM de pesquisa em um aplicativo de console.
Configurações que são portáteis
Ao exportar configurações de configuração de pesquisa personalizadas, o SharePoint cria um arquivo de configuração de pesquisa no formato XML. Este arquivo de configuração de pesquisa inclui todas as configurações de configuração de pesquisa personalizadas exportáveis no nível do SSA, no nível da coleção de sites ou no nível do site de onde você inicia a exportação. O arquivo de configuração de pesquisa de um conjunto de sites não contém as configurações de pesquisa dos sites individuais desse conjunto.
Quando você importa um arquivo de configuração de pesquisa, o SharePoint cria e habilita cada configuração de pesquisa personalizada na coleção de sites ou site de onde você inicia a importação.
A tabela a seguir lista as configurações que você pode exportar e importar e quaisquer dependências em outras configurações de configuração de pesquisa personalizadas. Se as configurações de configuração de pesquisa personalizadas dependerem de uma configuração de pesquisa personalizada em um nível diferente, você deverá exportar e importar configurações em todos os níveis relevantes.
Configurações de pesquisa que você pode exportar e importar
Definição de configuração | Dependências |
---|---|
Regras de consulta, incluindo blocos de resultados, resultados promovidos e segmentos de usuário | Fontes de resultado, tipos de resultado, esquema de pesquisa, modelo de classificação. |
Fontes de resultado | Esquema de pesquisa |
Tipos de resultado | Esquema de pesquisa, fontes de resultado, modelos de exibição |
Esquema de pesquisa | Nenhum |
Modelo de classificação | Esquema de pesquisa |
Você pode exportar configurações de configuração de pesquisa personalizadas de um SSA e importar as configurações para coleções de sites e sites. Mas você não pode importar configurações de configuração de pesquisa personalizadas para um SSA. Você também não pode exportar as configurações de configuração de pesquisa padrão.
No nível de conjunto de sites ou site, você pode exportar ou importar configurações de configuração de pesquisa usando a interface do usuário do SharePoint. Essas configurações estão localizadas na seção Pesquisa da página Configurações do Site .
Essas configurações também estão disponíveis na seção Administração de Coleção de Sites . Como alternativa, você pode importar e exportar programaticamente essas configurações usando o CSOM de pesquisa do SharePoint.
Pesquisar arquivos de configuração
A tabela a seguir lista arquivos de esquema que dão suporte a uma configuração de pesquisa. Para obter informações sobre o formato de esquema, consulte Esquemas de portabilidade de configurações de pesquisa do SharePoint.
Observação
Você pode baixar os arquivos de esquema do SP15_search_settings_portability_schema.zip.
Esquemas de portabilidade de configurações de pesquisa
Esquema | Descrição |
---|---|
SPS15XSDSearchSet1 | Especifica XML que representa fontes de resultado. |
SPS15XSDSearchSet2 | Especifica XML que representa tipos administrativos e membros para gerenciar uma instância de pesquisa do SSA. Isso inclui tipos de item de resultado e configurações de regra de propriedade. |
SPS15XSDSearchSet3 | Especifica XML que representa configurações que incluem regras de consulta, fontes de resultado, propriedades gerenciadas, propriedades rastreadas e modelos de classificação. |
SPS15XSDSearchSet4 | Especifica XML que representa enumerações usadas em outros esquemas. |
SPS15XSDSearchSet5 | Especifica XML que representa enumerações como ResultType que são usadas em outros esquemas. |
SPS15XDSearchSet6 | Especifica XML que representa enumerações usadas no esquema Microsoft.Office.Server.Search.Administration . |
Usando o CSOM para portar configurações
As APIs CSOM necessárias para importar e exportar suas configurações de pesquisa estão na classe SearchConfigurationPortability no namespace Microsoft.SharePoint.Client.Search.Portability .
O exemplo de código a seguir mostra como exportar as configurações de configuração de pesquisa de um site.
private static void ExportSearchSettings(ClientContext context, string settingsFile)
{
SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context);
SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb);
ClientResult<string> configresults = sconfig.ExportSearchConfiguration(owner);
context.ExecuteQuery();
string results = configresults.Value;
System.IO.File.WriteAllText(settingsFile, results);
}
O código a seguir mostra como importar as configurações de configuração de pesquisa de um site.
private static void ImportSearchSettings(ClientContext context, string settingsFile)
{
SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context);
SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb);
sconfig.ImportSearchConfiguration(owner, System.IO.File.ReadAllText(settingsFile));
context.ExecuteQuery();
}