Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      Sentry launches MCP monitoring tool

      August 14, 2025

      10 Benefits of Hiring a React.js Development Company (2025–2026 Edition)

      August 13, 2025

      From Line To Layout: How Past Experiences Shape Your Design Career

      August 13, 2025

      Hire React.js Developers in the US: How to Choose the Right Team for Your Needs

      August 13, 2025

      I’ve tested every Samsung Galaxy phone in 2025 – here’s the model I’d recommend on sale

      August 14, 2025

      Google Photos just put all its best editing tools a tap away – here’s the shortcut

      August 14, 2025

      Claude can teach you how to code now, and more – how to try it

      August 14, 2025

      One of the best work laptops I’ve tested has MacBook written all over it (but it’s even better)

      August 14, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Controlling Execution Flow with Laravel’s Sleep Helper

      August 14, 2025
      Recent

      Controlling Execution Flow with Laravel’s Sleep Helper

      August 14, 2025

      Generate Secure Temporary Share Links for Files in Laravel

      August 14, 2025

      This Week in Laravel: Filament 4, Laravel Boost, and Junie Review

      August 14, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      KDE Plasma 6 on Wayland: the Payoff for Years of Plumbing

      August 14, 2025
      Recent

      KDE Plasma 6 on Wayland: the Payoff for Years of Plumbing

      August 14, 2025

      FOSS Weekly #25.33: Debian 13 Released, Torvalds vs RISC-V, Arch’s New Tool, GNOME Perfection and More Linux Stuff

      August 14, 2025

      Ultimate ChatGPT-5 Prompt Guide: 52 Ideas for Any Task

      August 14, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Development»Integrating Optimizely CMS with Azure AI Search – A Game-Changer for Site Search

    Integrating Optimizely CMS with Azure AI Search – A Game-Changer for Site Search

    April 9, 2025
    Integrating Optimizely CMS with Azure AI Search – A Game-Changer for Site Search

    Want to elevate your Optimizely PaaS CMS site’s search capabilities? Azure AI Search could be just the tool you need! In this blog, I’ll discuss how to connect your CMS with Microsoft’s advanced AI-driven search platform to create fast, smart search experiences that surpass regular keyword searches. Optimizely Azure Ai Search

    What is Azure AI Search?

    Azure AI Search is Microsoft’s cloud-based search service powered by AI. It enables you to index, search, and analyze extensive amounts of content utilizing full-text searches, faceted navigation, and machine-learning features (such as language comprehension and semantic search).

    Why it’s great

    • Super fast and scalable search experiences.
    • Built-in AI for enhanced relevance.
    • Smooth integration with other Azure services.

    In short: it’s a smart search made user-friendly.

    Advantages of Integrating with Optimizely CMS

    Before we get into the benefits, let’s take a moment to consider how Azure AI Search compares to Optimizely’s native search functionalities. Optimizely Search (which relies on Lucene or Find/Search & Navigation) works well for straightforward keyword searches and basic filters, and it’s closely tied to the CMS. However, it doesn’t offer the advanced AI features, scalability, or flexibility that Azure provides right off the bat. Azure AI Search enriches the search experience with functionalities like semantic search, cognitive enhancements, and external data indexing, making it perfect for enterprise-level sites with intricate search requirements.

    Here’s why merging these two solutions is beneficial:

    • Improved search experiences with AI-based relevance.
    • Scalable and dependable – allow Azure to manage the heavy lifting.
    • Customized content indexing from your CMS using APIs or jobs.
    • Advanced options such as filtering, faceting, auto-complete, and more.

    Get Started with Azure AI Search

    To set up Azure AI Search, just follow these steps:

    1. Log in to the Azure Portal and look for AI Search.
    2. Click ‘Create’ to configure the following:
      • Name
      • Resource Group
      • Pricing Tier (including a free tier!)
      • Region

    Once created, make sure to note down the Search Service Name and Admin API Key – you’ll need these to send and retrieve

    Custom Scheduled Job to Sync Updated Content with Azure AI Search Using ServiceAPI

    By utilizing the Optimizely ServiceAPI, we can effectively get updated content and synchronize it with Azure AI Search. This process avoids the need to re-index the entire site, which helps boost performance.

    [ScheduledPlugIn(DisplayName = "Sync Updated Content to Azure Search")]
    public class AzureSearchJob : ScheduledJobBase
    {
        private readonly HttpClient _httpClient;
        private readonly string _serviceApiBaseUrl = "https://yourwebsite.com/episerverapi/content/";
    
        public AzureSearchJob()
        {
            _httpClient = new HttpClient();
            IsStoppable = true;
        }
    
        public override string Execute()
        {
            // Step 1: Get content updated in the last 24 hours
            var yesterday = DateTime.UtcNow.AddDays(-1).ToString("o");
            var contentApiUrl = $"{_serviceApiBaseUrl}?updatedAfter={Uri.EscapeDataString(yesterday)}";
    
            var response = _httpClient.GetAsync(contentApiUrl).Result;
            if (!response.IsSuccessStatusCode)
                return "Failed to fetch updated content from ServiceAPI.";
    
            var contentJson = response.Content.ReadAsStringAsync().Result;
            var documents = JsonSerializer.Deserialize<JsonElement>(contentJson).EnumerateArray()
                .Select(content => new Dictionary<string, object>
                {
                    ["id"] = content.GetProperty("ContentGuid").ToString(),
                    ["name"] = content.GetProperty("Name").GetString(),
                    ["content"] = content.GetProperty("ContentLink").GetRawText(),
                    ["type"] = content.GetProperty("ContentTypeName").GetString()
                }).ToList();
    
            // Step 2: Push to Azure AI Search
            var json = JsonSerializer.Serialize(new { value = documents });
            var request = new HttpRequestMessage(HttpMethod.Post, "https://servicename.search.windows.net/indexes/<index-name>/docs/index?api-version=2021-04-30-Preview")
            {
                Content = new StringContent(json, Encoding.UTF8, "application/json")
            };
            request.Headers.Add("api-key", "<your-admin-key>");
    
            var result = _httpClient.SendAsync(request).Result;
            return result.IsSuccessStatusCode ? "Success" : "Failed to index in Azure Search.";
        }
    }

    You can filter and transform the ServiceAPI response further to match your index schema.

    Custom Page Type and Controller/View to Query Azure Search

    Create a new page type to serve as a Search Results page.

    Search Page Type

    [ContentType(DisplayName = "Search Results Page", GUID = "3C918F3E-D82B-480B-9FD8-A3A1DA3ECB1B", Description = "Search using Azure Search")]
    public class AzureSearchPage : PageData
    {
        [Display(Name = "Search Placeholder")]
        public virtual string PlaceholderText { get; set; }
    }

    Page Controller

    public class AzureSearchPageController : PageController<AzureSearchPage>
    {
        public ActionResult Index(AzureSearchPage currentPage, string q = "")
        {
            var results = new List<string>();
    
            if (!string.IsNullOrEmpty(q))
            {
                var url = $"https://<search-service>.search.windows.net/indexes/<index-name>/docs?api-version=2021-04-30-Preview&search={q}";
                using var client = new HttpClient();
                client.DefaultRequestHeaders.Add("api-key", "<your-query-key>");
                var response = client.GetStringAsync(url).Result;
    
                var doc = JsonDocument.Parse(response);
                results = doc.RootElement.GetProperty("value")
                    .EnumerateArray()
                    .Select(x => x.GetProperty("name").GetString())
                    .ToList();
            }
    
            ViewBag.Results = results;
            ViewBag.Query = q;
            return View(currentPage);
        }
    }

    Search Page View

    @model AzureSearchPage
    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <h1>Search Results</h1>
    <form method="get">
        <input type="text" name="q" value="@ViewBag.Query" placeholder="@Model.PlaceholderText" />
        <button type="submit">Search</button>
    </form>
    
    <ul>
    @foreach (var result in ViewBag.Results as List<string>)
    {
        <li>@result</li>
    }
    </ul>

    Optimizely CMS / Azure AI Search Advanced Use Cases

    • Semantic Search: Let Azure understand intent, not just keywords.
    • Auto-complete & Suggestions: Hook into search-as-you-type features.
    • Faceted Navigation: Create filters by category, tags, etc.
    • AI Enrichment: Use Azure’s skillsets to extract metadata, and analyse images, or OCR PDFs.
    • Multilingual Search: Azure supports search across multiple languages out of the box.

    Summary

    Integrating Azure AI Search with Optimizely CMS can truly take your site search from basic to brilliant. With a bit of setup and some clean code, you’re empowering users with fast, smart, and scalable content discovery.

    This blog is also published here

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleThe Power of Linux Shell Environment Variables
    Next Article Minneapolis, Let’s Talk AI at Agentforce World Tour

    Related Posts

    Development

    Controlling Execution Flow with Laravel’s Sleep Helper

    August 14, 2025
    Development

    Generate Secure Temporary Share Links for Files in Laravel

    August 14, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    6 rumored Android 16 features that are making this loyal Pixel user ecstatic

    News & Updates

    CVE-2025-3722 – Symantec ePO Path Traversal Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    Multi-tenant RAG implementation with Amazon Bedrock and Amazon OpenSearch Service for SaaS using JWT

    Machine Learning

    CVE-2024-42646 – NanoMQ Denial of Service (DoS) Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    Highlights

    Reasons Why Your WordPress Website Isn’t Ranking in Google

    July 17, 2025

    Post Content Source: Read More 

    VPS vs PaaS: How to Choose a Hosting Solution

    July 22, 2025

    You can make a photo come alive with TikTok’s new AI tool – here’s how

    May 14, 2025

    Markus Buehler receives 2025 Washington Award

    June 8, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.