Configure the Solr search provider

Abstract

This topic describes how to manually configure the Solr search provider when you use it for xConnect.

This topic describes how to configure the Solr search provider manually. It is assumed that you have already installed Solr.

Solr is the default search engine for xConnect search for on-premise installations.

Note

The Sitecore Experience Platform is secure by default. You must therefore enable SSL for Solr.

Create Solr cores

To create new Solr cores:

  1. Make 2 copies of Solr _default configurations from the C:\solr-8.1.1\server\solr\configset\_default folder. Put the copies in the C:\solr-8.1.1\server\solr folder.

  2. Rename the cores <custom_name> and <custom_name>_rebuild, for example:

    • xdbcore

    • xdbcore_rebuild

      Important

      You must name one of the cores <custom_name>_rebuild.

  3. Open the Solr web client (https://localhost:89xx/) and click Core Admin.

  4. Add two new Solr cores.

  5. Use the Solr Schema API to apply schema changes from the xconnect\App_data\solrcommands\schema.json file to both cores.

    This example shows a PowerShell script that uses the Solr Schema API to apply the changes:

    $pathToXdbSchemaFile="C:\inetpub\wwwroot\<instance_name>_xconnect\App_Data\solrcommands\schema.json"
    $apiUrl="https://<host>:<port>/solr/<custom_name>/schema"
    
    $requestBody = Get-Content $pathToXdbSchemaFile -Raw | ConvertFrom-Json | ConvertTo-Json
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 
    
    Invoke-WebRequest -Uri $apiUrl -ContentType "application/json" -Method Post -UseBasicParsing -Body $requestBody | ConvertFrom-Json | ConvertTo-Json
  6. You must specify the solrCore connection string with the name of the core attached to Solr in these configuration files:

    • xconnect\App_Config\ConnectionStrings.config

    • xconnect\App_data\jobs\continuous\IndexWorker\App_config\ConnectionStrings.config

    The node you update looks like this:

    <add name="solrCore" connectionString="https://<host>:<port>/solr/<custom_name>"/>

    You must replace <custom_name> with the name you use for the core.