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

      CodeSOD: A Unique Way to Primary Key

      July 22, 2025

      BrowserStack launches Figma plugin for detecting accessibility issues in design phase

      July 22, 2025

      Parasoft brings agentic AI to service virtualization in latest release

      July 22, 2025

      Node.js vs. Python for Backend: 7 Reasons C-Level Leaders Choose Node.js Talent

      July 21, 2025

      The best CRM software with email marketing in 2025: Expert tested and reviewed

      July 22, 2025

      This multi-port car charger can power 4 gadgets at once – and it’s surprisingly cheap

      July 22, 2025

      I’m a wearables editor and here are the 7 Pixel Watch 4 rumors I’m most curious about

      July 22, 2025

      8 ways I quickly leveled up my Linux skills – and you can too

      July 22, 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

      The Intersection of Agile and Accessibility – A Series on Designing for Everyone

      July 22, 2025
      Recent

      The Intersection of Agile and Accessibility – A Series on Designing for Everyone

      July 22, 2025

      Zero Trust & Cybersecurity Mesh: Your Org’s Survival Guide

      July 22, 2025

      Execute Ping Commands and Get Back Structured Data in PHP

      July 22, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      A Tomb Raider composer has been jailed — His legacy overshadowed by $75k+ in loan fraud

      July 22, 2025
      Recent

      A Tomb Raider composer has been jailed — His legacy overshadowed by $75k+ in loan fraud

      July 22, 2025

      “I don’t think I changed his mind” — NVIDIA CEO comments on H20 AI GPU sales resuming in China following a meeting with President Trump

      July 22, 2025

      Galaxy Z Fold 7 review: Six years later — Samsung finally cracks the foldable code

      July 22, 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

    GPT-5 is Coming: Revolutionizing Software Testing

    July 22, 2025
    Development

    Win the Accessibility Game: Combining AI with Human Judgment

    July 22, 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

    CVE-2025-7544 – Tenda AC1206 Stack-Based Buffer Overflow Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    University of Michigan Researchers Introduce OceanSim: A High-Performance GPU-Accelerated Underwater Simulator for Advanced Marine Robotics

    Machine Learning

    Is Microsoft’s new AI still “4x more accurate than human doctors”? — Typos in medical prompts to chatbots could be catastrophic

    News & Updates

    Sophisticated IIS Malware Targets South Korean Web Servers

    Security

    Highlights

    CVE-2025-4227 – Palo Alto Networks GlobalProtect Unencrypted Packet Injection Vulnerability

    June 13, 2025

    CVE ID : CVE-2025-4227

    Published : June 13, 2025, 6:15 a.m. | 3 hours, 49 minutes ago

    Description : An improper access control vulnerability in the Endpoint Traffic Policy Enforcement https://docs.paloaltonetworks.com/globalprotect/6-0/globalprotect-app-new-features/new-features-released-in-gp-app/endpoint-traffic-policy-enforcement feature of the Palo Alto Networks GlobalProtect™ app allows certain packets to remain unencrypted instead of being properly secured within the tunnel.

    An attacker with physical access to the network can inject rogue devices to intercept these packets. Under normal operating conditions, the GlobalProtect app automatically recovers from this interception within one minute.

    Severity: 0.0 | NA

    Visit the link for more details, such as CVSS details, affected products, timeline, and more…

    High-Severity Flaw in MIM Medical Imaging Software Allows Code Execution!

    June 5, 2025

    Exploits for unauthenticated FortiWeb RCE are public, so patch quickly! (CVE-2025-25257)

    July 15, 2025

    CVE-2025-4015 – Novel-Plus SessionController Missing Authentication Remote Vulnerability

    April 28, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

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