We’re excited to announce AI Semantic Ranking support in ExamineX for Azure Search! 🚀

Traditional keyword search matches documents based on exact terms — great for simple lookups, but it falls short for natural language queries. With semantic ranking, Azure AI Search uses Microsoft’s deep learning models to understand the meaning behind your query and re-rank results by relevance.

Search for “hotels within walking distance to live music near the beach” and get genuinely useful results — not just documents that happen to contain those words.

How it works

  1. Your normal search runs first using BM25 keyword scoring
  2. The top 50 results are passed through a language understanding model
  3. Results are re-ranked by semantic relevance — the most meaningful matches rise to the top
  4. Optionally, captions and answers are extracted from your content

Getting started

Configure your index with a semantic configuration that maps your fields to semantic roles:

azureSearch.ConfigureIndex("ExternalIndex", options =>
{
    options.SemanticConfigurations = new[]
    {
        new AzureSearchSemanticConfiguration
        {
            TitleField = "nodeName",
            ContentFields = new[] { "bodyText", "Description" },
            KeywordsFields = new[] { "nodeTypeAlias" }
        }
    };
});

Then enable semantic ranking on any query:

var results = searcher.Search("hotels near the beach", new AzureSearchQueryOptions(
    new SemanticSearchQueryOptions
    {
        EnableCaptions = true
    }));

That’s it — your search text "hotels near the beach" is used for both the initial keyword (BM25) search and the semantic re-ranking pass. Results are re-ranked by meaning, and each result includes extracted captions highlighting the most relevant passages.

Tip: You can optionally set SemanticQuery to provide a separate natural language query just for the semantic model. This is mainly useful with the query builder, where your Examine query uses Lucene syntax that isn’t ideal input for language understanding. For simple Search(string) calls, you typically don’t need it — the search text is used for both stages automatically. See the full documentation for more advanced examples.

Multiple configurations

For indexes with different document shapes (articles, products, media), you can define multiple named configurations. The first becomes the default, and you select others at query time:

options.SemanticConfigurations = new[]
{
    new AzureSearchSemanticConfiguration
    {
        ConfigurationName = "article-config",
        TitleField = "nodeName",
        ContentFields = new[] { "bodyText" }
    },
    new AzureSearchSemanticConfiguration
    {
        ConfigurationName = "product-config",
        TitleField = "productName",
        ContentFields = new[] { "productDescription" },
        KeywordsFields = new[] { "category", "tags" }
    }
};

Captions and answers

Semantic ranking doesn’t just reorder results — it can extract the most relevant passages and provide direct answers to questions:

  • Captions surface the most important passage from each result, with key phrases highlighted using <em> tags
  • Answers are verbatim passages from your index that directly respond to question-like queries — perfect for FAQ-style search experiences

Pricing

There is no additional cost on the ExamineX side — semantic ranking is included with all versions of ExamineX.AzureSearch.Umbraco 6.2 and up at no extra charge.

On the Azure side, the Free tier includes semantic ranking with 1,000 queries/month — plenty for development and testing. For production workloads, a paid tier is recommended. See Azure AI Search pricing for details.

Learn more

Check out the full AI Semantic Ranking documentation for detailed configuration options, code examples, and working with results.

Happy Searching! 🎉