Sitecore com multi-site e Coveo – Como limitar a busca para cada site

Utilizando Coveo em uma implementação de multi-site: 8 passos para limitar os resultados da busca por site

Ao longo destes últimos anos trabalhando com Sitecore me deparei várias vezes com o seguinte requisito e decidi escrever um post a respeito:

Tenho uma implementação Sitecore multi-site que utiliza Coveo como ferramenta de busca e gostaria de limitar os resultados da pesquisa para cada site. Como posso fazer isso?

Felizmente isso é bem tranquilo de fazer. Abaixo descrevo 8 passos de como realizar isso:

1 – Você precisa de uma estrutura de conteúdo no Sitecore consistente. Eis um exemplo que pode ser seguido:

 

Site A
             Home
                        Search-Results
                        SiteA-PageA
                        SiteA-PageB
Site B
           Home
                       Search-Results
                       SiteB-PageA
                       SiteB-PageB

Perceba que nesta estrutura, cada site tem um item Home e cada item Home tem um item filho Search-Results. Os outros items, tipo SitaA-PageA são apenas exemplos de conteúdo para teste.

Outro ponto importante é que os itens Search-Results tenham o mesmo template.

2. Atualize o presentation details do template Search-Results adicionando o sublayout CoveoSearchResults bem como o Coveo Search Resources. Se você criou uma réplica do sublayout CoveoSearchResults utilize essa réplica. Essa prática é a mais recomendada pela própria Coveo e garante que na hora de fazer o upgrade do Coveo que perca a compatibilidade nativa do upgrade.
3. Crie uma regra no Sitecore que aponte para um tipo específico, como mostra o exemplo abaixo:

3

4. Utilize o código abaixo para a definição da regra. Note que na execução deste codigo utiliza-se o item de contexto(neste caso o item Search-Results) e define-se qual é o ID do item pai. Isto é o que define o contexto da busca. Voce pode pensar neste código mais ou menos assim: “Estou no site A e estou definindo o item raiz como sendo o item Home deste site. Limite a busca para este item e a árvore de itens filhos”

4

5. Navegue até o template do Search-Results e nos standard values dele abra o presentation details e edite o sublayout CoveoSearchResults.
6. No campo “Filter expression rules” clique em Edit Rule, e adicione a regra que voce acabou de criar. Ao fazer isso você vai ver algo como:

6

7. No painel de controle do Sitecore procure por index manager e Rebuild Index. Faça isso para os índices do Coveo
8. Pronto! Ao abrir as páginas de search-results os conteúdos de cada site deverão estar limitados pela regra.

 

Clique aqui para ver o post em ingles

How can I get the sitecore databases path on the file system?

From time to time, as a developer, we need to attach sitecore databases to SQL Server for many reasons like starting on a new project, or having to unlock the read-only permissions from it on the first time, etc.

I’m not sure about you but I like to have them all in the same folder so I know where all my projects databases are. How can one find what is the path on the file system to all your sitecore databases?

It’s easy.

1- Open Sql Server Management Studio and login with your credentials:

sqlmanagementstudio

2- Create a new query and execute the following sql script:

SELECT name, physical_name AS current_file_location FROM sys.master_files
WHERE name like ‘%sitecore%’

you will get a result set of all your databases that have the string “sitecore” in it:

sqlscript

Also you can use the same script to get all databases(Sitecore or non-Sitecore ones) by just removing the clause WHERE from the sql statement:

SELECT name, physical_name AS current_file_location FROM sys.master_files

Hope you liked it!

Coveo on a Sitecore multi-site implementation: 8 steps on how to limit the search results for each site

Working with Sitecore multi-sites implementation these last years I have come across a requirement like this and I decided to write a post about it:
I have a Sitecore with a multi-site implementation and has Coveo as the search engine and I would like limit the search results per site’s content. How can I do that?
Fortunately this is quite straight forward to setup. Here are 8 steps on how you can do that.
1 – You need a consistent content structure.  Here is a suggestion of a content pattern you can use:
Site A
             Home
                        Search-Results
                        SiteA-PageA
                        SiteA-PageB
Site B
           Home
                       Search-Results
                       SiteB-PageA
                       SiteB-PageB
In this content structure note that for every site you have a Home and each Home item has a Search-Results child item. The Site-Page items are just content you can use for your tests test. In this case both “Search-Results” items should use the same template as well.
2. Update the Search-Results template and add to the presentation details a CoveoSearchResults sublayout as well as the Coveo Search Resources. If you have created a custom CoveoSearchResults use that. This is most recommended as if customizations are needed for that sublayout you don`t break Coveo`s upgrade path. If not use the CoveoSearchResults sublayout that comes with the Coveo for Sitecore installer.
3. Create a custom Sitecore rule that points to a specific type as in the example bellow:

3

4. On the constructor of the class set the code bellow. Note that this code looks for the context item(in this case the Search-Results page) and set what the parent item ID is. This is what is limiting the context of the search. You can think of this code like this “I am on Site A, or B and I’m setting the root item as the Home item of this very site. Limit the search for this item and it’s descendants”.

4

5. On the standard values of the Search-Results template open the presentation details and Edit the CoveoSearchResults sublayout
6. On the “Filter expression rules” field click on Edit Rule, add the custom rule you just created and you should see a screen like the example bellow. Don’t forget to save it:

6

7. Rebuild Coveo indexes.
8. Open the search-results on both sites and see the content limited for each site.

Click here to see it in portuguese