Azure search services
Overview
By default, in Sitefinity CMS search indexes are generated and stored locally using Lucene.NET search library. If your project resides on a cloud storage, you can use alternative search index generation and storage on external services - such as Azure AI Search or an external Elasticsearch server, which are supported alternatives.
Set up Azure AI Search
To communicate with Azure AI Search, Sitefinity CMS uses Azure.Search.Documents 11.4.0.
NOTE: If your project is on version Sitefinity CMS 15.4.8632 or later, you must use the compatible version Azure.Search.Documents 12.0.0. Note that using a different version of
Azure.Search.Documentsmay result in compatibility issues.
To use Azure AI Search for Sitefinity CMS search indexes, perform the following:
-
Follow Azure AI Search documentation to create an instance of Azure AI Search in the Azure Portal.
-
Obtain the Service name and Admin API key.
-
In Sitefinity CMS backend, navigate to Administration » Settings and click Search.
-
Under Which search service to use in your site?, select Azure Search.
-
In Search service name, enter your Azure AI Search service name.
NOTE: You enter only the name of the search service and not the full URL. For example, if the URL is https://test.search.windows.net, you must enter only
testas the search service name. -
In Admin API key, enter the API key for your Azure AI Search service.
-
To test Sitefinity's connection with your Azure AI Search service, click Test connection.
-
Click Save changes.
NOTE: Search results are ordered based on
@scoreparameter. This method returns the relevance of the result for each search term. By using@scoreparameter, the most relevant results come first.
For more information, see Azure AI Search libraries for .NET.
Search index fields and supported data types
When you add a search index to Azure AI Search, Sitefinity CMS creates by default the following fields:
ContentContentTypeIdIdentityFieldLanguageLastModifiedLinkOriginalItemIdPipeIdProviderPublicationDateSummaryTitle
IMPORTANT: Do not add any of these fields as Additional fields for indexing, because you will get a duplicate field exception and will not be able to index. You must specify the type of the additional fields for indexing according to the data type mapping provided in the following table.
Azure Search data type Sitefinity type Edm.String Short text
Long textEdm.DateTimeOffset Date and time Edm.Int32 Numeric whole number (NumberWhole) Edm.Double Numeric decimal number (NumberDecimal) Edm.Boolean Yes / No Collection( Edm.String ) Classification
Choices
Scoring profiles
Scoring profiles in Azure AI Search allow you to configure the way search results are ranked, based on one or more custom-defined criteria. They are part of the index definition and consist of weighted fields and functions.
Use weighted fields when you want to prioritize search results in a specific field. For instance, prioritize results that are in the Content or Title fields over other fields.
With functions, you can prioritize results by the time period they were published in, the numeric value of the results, or by tags. Sitefinity CMS supports the following functions:
freshnessmagnitudetag
For the tag function you also need to specify parameters. For more information, see Microsoft documentation » Add scoring profiles to a search index.
Create scoring profiles
To create scoring profiles:
- Set up Sitefinity CMS to use Azure AI Search.
- Create a search index. For more information, see Create search indexes.
- Add scoring profiles in the Azure Portal. For more information, see Microsoft documentation » Add scoring profiles to a search index.
- Configure the Search box widget by following the procedure:
- For ASP.NET Core based frontend: Search box widget » Boost search results
- For Next.js based frontend: Search box widget » Boost search results
IMPORTANT: When you use the Tag scoring function, you must add a Tags parameter in the Azure Portal. When a Tags parameter is added to an index, you can configure these parameters in the Advanced settings of the Search box widget.