{"id":1282,"date":"2025-04-10T22:47:20","date_gmt":"2025-04-10T22:47:20","guid":{"rendered":"https:\/\/www.naveedulhaq.com\/?p=1282"},"modified":"2025-04-16T09:51:55","modified_gmt":"2025-04-16T09:51:55","slug":"personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer","status":"publish","type":"post","link":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/","title":{"rendered":"Personalized Optimizely CMS Website Search Experiences Azure AI Search &amp; Personalizer"},"content":{"rendered":"\n<p>In the last blog, we discussed <a href=\"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/integrating-optimizely-azure-ai-search-anger-for-site-search\/\">Integrating the&nbsp;Optimizely CMS website with Azure AI search<\/a>. Now let&#8217;s take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer. Together, they enable you to serve dynamic customized content and search results across user \u2002behaviour, preferences, and context.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Azure Personalizer?<\/h2>\n\n\n\n<p>Azure Personalizer Cognitive Service for Real-time Association using Reinforcement Learning. It gives you the ability to serve content or experiences that are most relevant to\u2002a user \u2014 informed by past behaviour and current context. <\/p>\n\n\n\n<p><strong>Benefits of AI Personalizer:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>So it can study and evolve as people engage with it.<\/li>\n\n\n\n<li>Amazingly helpful for ranking search results.<\/li>\n\n\n\n<li>Can customize direct calls to action, highlighted articles, or goods.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How It Works with Azure AI Search and Optimizely<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2025\/04\/Personalized-Optimizely-CMS-Website-Search-Experiences-Azure-AI-Search-Personalizer-1024x683.png\" loading=\"lazy\" alt=\"Azure AI Search &amp; Personalizer\" class=\"wp-image-1286\" srcset=\"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2025\/04\/Personalized-Optimizely-CMS-Website-Search-Experiences-Azure-AI-Search-Personalizer-1024x683.png 1024w, https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2025\/04\/Personalized-Optimizely-CMS-Website-Search-Experiences-Azure-AI-Search-Personalizer-300x200.png 300w, https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2025\/04\/Personalized-Optimizely-CMS-Website-Search-Experiences-Azure-AI-Search-Personalizer-768x512.png 768w, https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2025\/04\/Personalized-Optimizely-CMS-Website-Search-Experiences-Azure-AI-Search-Personalizer.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The user performs a search on your Optimizely site.<\/li>\n\n\n\n<li>Azure AI Search simply gives a \u2002list of matching documents<\/li>\n\n\n\n<li>These documents are sent to Azure Personalizer as \u201c<strong>rankable actions.<\/strong>\u201d<\/li>\n\n\n\n<li>The personalized orders results using the context of the user.<\/li>\n\n\n\n<li>Your app serves personalized results and the user&#8217;s feedback helps Personalizer to learn &amp; evolve further.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Set Up Azure Personalizer<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Navigate to Azure Portal \u2192 Personalizer\u2002resource creation<\/li>\n\n\n\n<li>Save your endpoint and API key.<\/li>\n\n\n\n<li>In step 3, specify the Content that you want to be ranked (i.e.,\u2002search results)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Integration Code<\/h2>\n\n\n\n<p><strong>Model for Rankable Actions<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class RankableDocument\n{\n    public string Id { get; set; }\n    public string Title { get; set; }\n    public string Summary { get; set; }\n    public string Category { get; set; }\n}\n<\/code><\/pre>\n\n\n\n<p><strong>Send Info to Personalizer with Context:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private object GetUserContext(HttpRequestBase request)\n{\n    return new\n    {\n        timeOfDay = DateTime.Now.Hour,\n        device = request.Browser.IsMobileDevice ? \"mobile\" : \"desktop\",\n        userAgent = request.UserAgent,\n        language = request.UserLanguages?.FirstOrDefault() ?? \"en\"\n    };\n}\npublic async Task&lt;List&lt;RankableDocument&gt;&gt; GetPersonalizedResultsAsync(List&lt;RankableDocument&gt; documents, string userId)\n{\n    var contextFeatures = new&#91;] { GetUserContext(Request) };\n\n    var actions = documents.Select(doc =&gt; new\n    {\n        id = doc.Id,\n        features = new&#91;]\n        {\n            new { category = doc.Category },\n            new { title = doc.Title }\n        }\n    });\n\n    _eventId = Guid.NewGuid().ToString();\n\n    var request = new\n    {\n        contextFeatures = contextFeatures,\n        actions = actions,\n        excludedActions = new string&#91;] {},\n        eventId = _eventId,\n        deferActivation = false\n    };\n\n    var client = new HttpClient();\n    client.DefaultRequestHeaders.Add(\"Ocp-Apim-Subscription-Key\", \"--YOUR API KEY ---\");\n    var response = await client.PostAsync(\"--Endpoint--\/personalizer\/v1.0\/rank\",\n        new StringContent(JsonSerializer.Serialize(request), Encoding.UTF8, \"application\/json\"));\n\n    var result = JsonDocument.Parse(await response.Content.ReadAsStringAsync());\n    var topActionId = result.RootElement.GetProperty(\"rewardActionId\").GetString();\n\n    return documents.OrderByDescending(d =&gt; d.Id == topActionId).ToList();\n}\n<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s consider our previous example of search page controller &amp; view and extend it<\/p>\n\n\n\n<p><strong>Search Controller<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class AzureSearchPageController : PageController&lt;AzureSearchPage&gt;\n{\n    private static string _eventId;\n\n    public async Task&lt;ActionResult&gt; Index(AzureSearchPage currentPage, string q = \"\")\n    {\n        var results = new List&lt;RankableDocument&gt;();\n\n        if (!string.IsNullOrEmpty(q))\n        {\n            var url = $\"https:\/\/&lt;search-service&gt;.search.windows.net\/indexes\/&lt;index-name&gt;\/docs?api-version=2021-04-30-Preview&amp;search={q}\";\n            using var client = new HttpClient();\n            client.DefaultRequestHeaders.Add(\"api-key\", \"&lt;your-query-key&gt;\");\n            var response = await client.GetStringAsync(url);\n\n            var doc = JsonDocument.Parse(response);\n            results = doc.RootElement.GetProperty(\"value\")\n                .EnumerateArray()\n                .Select(x =&gt; new RankableDocument\n                {\n                    Id = x.GetProperty(\"id\").GetString(),\n                    Title = x.GetProperty(\"name\").GetString(),\n                    Category = x.GetProperty(\"type\").GetString(),\n                    Summary = x.GetProperty(\"content\").GetString()\n                }).ToList();\n\n            results = await GetPersonalizedResultsAsync(results, \"user123\");\n        }\n\n        ViewBag.Results = results;\n        ViewBag.Query = q;\n        ViewBag.EventId = _eventId;\n        return View(currentPage);\n    }\n\n    &#91;HttpPost]\n    public async Task&lt;ActionResult&gt; Reward(string eventId, double rewardScore)\n    {\n        using var client = new HttpClient();\n        client.DefaultRequestHeaders.Add(\"Ocp-Apim-Subscription-Key\", \"&lt;your-api-key&gt;\");\n\n        var rewardUrl = $\"&lt;your-endpoint&gt;\/personalizer\/v1.0\/events\/{eventId}\/reward\";\n        var result = await client.PostAsync(rewardUrl, new StringContent(rewardScore.ToString(), Encoding.UTF8, \"application\/json\"));\n\n        return Json(new { success = result.IsSuccessStatusCode });\n    }\n}\n<\/code><\/pre>\n\n\n\n<p><strong>Search Page View<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@model AzureSearchPage\n&lt;h1>Personalized Search Results&lt;\/h1>\n&lt;form method=\"get\">\n    &lt;input type=\"text\" name=\"q\" value=\"@ViewBag.Query\" placeholder=\"Search...\" \/>\n    &lt;button type=\"submit\">Search&lt;\/button>\n&lt;\/form>\n\n&lt;ul>\n@foreach (var result in ViewBag.Results as List&lt;RankableDocument>)\n{\n    &lt;li>\n        &lt;h4>@result.Title&lt;\/h4>\n        &lt;p>@result.Summary&lt;\/p>\n        &lt;button onclick=\"sendReward('@ViewBag.EventId', 1.0)\">Like&lt;\/button>\n        &lt;button onclick=\"sendReward('@ViewBag.EventId', 0.0)\">Not Relevant&lt;\/button>\n    &lt;\/li>\n}\n&lt;\/ul>\n&lt;script>\nfunction sendReward(eventId, score) {\n    fetch('\/AzureSearchPage\/Reward', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({ eventId: eventId, rewardScore: score })\n    }).then(r => {\n        if (r.ok) alert(\"Thanks! Your feedback was recorded.\");\n    });\n}\n&lt;\/script><\/code><\/pre>\n\n\n\n<p>With Azure AI Search delivering relevant results and Azure Personalizer re-ranking them based on real-time context, your Optimizely site becomes an intelligent experience engine.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last blog, we discussed Integrating the&nbsp;Optimizely CMS website with Azure AI search. Now let&#8217;s take a bit more advanced topic to serve Personalization&#8230;<\/p>\n","protected":false},"author":1,"featured_media":599,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,18,4],"tags":[34,141,37,10,13,63,90],"class_list":["post-1282","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dot-net-core","category-azure","category-episerver","tag-ai","tag-azure","tag-c","tag-cms","tag-episerver","tag-optimizely","tag-optimizely-cms"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Personalize Optimizely Search with Azure AI and Personalizer - Naveed Ul-Haq&#039;s blog<\/title>\n<meta name=\"description\" content=\"let&#039;s take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Personalize Optimizely Search with Azure AI and Personalizer - Naveed Ul-Haq&#039;s blog\" \/>\n<meta property=\"og:description\" content=\"let&#039;s take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/\" \/>\n<meta property=\"og:site_name\" content=\"Naveed Ul-Haq&#039;s blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-10T22:47:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-16T09:51:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2021\/08\/optimizely.png\" \/>\n\t<meta property=\"og:image:width\" content=\"232\" \/>\n\t<meta property=\"og:image:height\" content=\"235\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Naveed Ul-Haq\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Naveed Ul-Haq\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/\"},\"author\":{\"name\":\"Naveed Ul-Haq\",\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/#\\\/schema\\\/person\\\/dd6db5980b965fcae41e096d357c65c9\"},\"headline\":\"Personalized Optimizely CMS Website Search Experiences Azure AI Search &amp; Personalizer\",\"datePublished\":\"2025-04-10T22:47:20+00:00\",\"dateModified\":\"2025-04-16T09:51:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/\"},\"wordCount\":288,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/#\\\/schema\\\/person\\\/dd6db5980b965fcae41e096d357c65c9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.naveedulhaq.com\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/optimizely.png\",\"keywords\":[\"AI\",\"Azure\",\"c#\",\"cms\",\"episerver\",\"Optimizely\",\"Optimizely Content cloud\"],\"articleSection\":[\".NET\",\"Azure\",\"Optimizely\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/\",\"url\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/\",\"name\":\"Personalize Optimizely Search with Azure AI and Personalizer - Naveed Ul-Haq&#039;s blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.naveedulhaq.com\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/optimizely.png\",\"datePublished\":\"2025-04-10T22:47:20+00:00\",\"dateModified\":\"2025-04-16T09:51:55+00:00\",\"description\":\"let's take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.naveedulhaq.com\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/optimizely.png\",\"contentUrl\":\"https:\\\/\\\/www.naveedulhaq.com\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/optimizely.png\",\"width\":232,\"height\":235,\"caption\":\"optimizely (Episerver)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/index.php\\\/episerver\\\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.naveedulhaq.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Personalized Optimizely CMS Website Search Experiences Azure AI Search &amp; Personalizer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/#website\",\"url\":\"https:\\\/\\\/www.naveedulhaq.com\\\/\",\"name\":\"Naveed Ul-Haq's blog\",\"description\":\"AI, Optimizely, Azure &amp; more\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/#\\\/schema\\\/person\\\/dd6db5980b965fcae41e096d357c65c9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.naveedulhaq.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.naveedulhaq.com\\\/#\\\/schema\\\/person\\\/dd6db5980b965fcae41e096d357c65c9\",\"name\":\"Naveed Ul-Haq\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g\",\"caption\":\"Naveed Ul-Haq\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g\"},\"description\":\"I lead engineering delivery teams for digital commerce and digital experience platforms, combining hands-on architecture experience with strong delivery governance. Over 20+ years, I\u2019ve built and led cross\u2011functional teams (engineering, BA, QA) delivering modern cloud solutions on Azure, microservices, APIs and eCommerce\\\/CMS platforms. My recent focus includes AI-enabled commerce automation: product ingestion and enrichment workflows, content optimisation for SEO and shopping feeds, and agentic tooling to improve marketing and accessibility workflows. I\u2019m passionate about building high-performing teams, establishing quality\\\/release standards, and delivering measurable outcomes across performance, reliability, and speed of change.\",\"sameAs\":[\"https:\\\/\\\/www.naveedulhaq.com\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/naveedulhaq\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Personalize Optimizely Search with Azure AI and Personalizer - Naveed Ul-Haq&#039;s blog","description":"let's take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/","og_locale":"en_GB","og_type":"article","og_title":"Personalize Optimizely Search with Azure AI and Personalizer - Naveed Ul-Haq&#039;s blog","og_description":"let's take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer.","og_url":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/","og_site_name":"Naveed Ul-Haq&#039;s blog","article_published_time":"2025-04-10T22:47:20+00:00","article_modified_time":"2025-04-16T09:51:55+00:00","og_image":[{"width":232,"height":235,"url":"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2021\/08\/optimizely.png","type":"image\/png"}],"author":"Naveed Ul-Haq","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Naveed Ul-Haq","Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#article","isPartOf":{"@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/"},"author":{"name":"Naveed Ul-Haq","@id":"https:\/\/www.naveedulhaq.com\/#\/schema\/person\/dd6db5980b965fcae41e096d357c65c9"},"headline":"Personalized Optimizely CMS Website Search Experiences Azure AI Search &amp; Personalizer","datePublished":"2025-04-10T22:47:20+00:00","dateModified":"2025-04-16T09:51:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/"},"wordCount":288,"commentCount":0,"publisher":{"@id":"https:\/\/www.naveedulhaq.com\/#\/schema\/person\/dd6db5980b965fcae41e096d357c65c9"},"image":{"@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2021\/08\/optimizely.png","keywords":["AI","Azure","c#","cms","episerver","Optimizely","Optimizely Content cloud"],"articleSection":[".NET","Azure","Optimizely"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/","url":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/","name":"Personalize Optimizely Search with Azure AI and Personalizer - Naveed Ul-Haq&#039;s blog","isPartOf":{"@id":"https:\/\/www.naveedulhaq.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#primaryimage"},"image":{"@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2021\/08\/optimizely.png","datePublished":"2025-04-10T22:47:20+00:00","dateModified":"2025-04-16T09:51:55+00:00","description":"let's take a bit more advanced topic to serve Personalization experience with Azure AI search with Azure personalizer.","breadcrumb":{"@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#primaryimage","url":"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2021\/08\/optimizely.png","contentUrl":"https:\/\/www.naveedulhaq.com\/wp-content\/uploads\/2021\/08\/optimizely.png","width":232,"height":235,"caption":"optimizely (Episerver)"},{"@type":"BreadcrumbList","@id":"https:\/\/www.naveedulhaq.com\/index.php\/episerver\/personalized-optimizely-cms-website-search-experiences-azure-ai-search-personalizer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.naveedulhaq.com\/"},{"@type":"ListItem","position":2,"name":"Personalized Optimizely CMS Website Search Experiences Azure AI Search &amp; Personalizer"}]},{"@type":"WebSite","@id":"https:\/\/www.naveedulhaq.com\/#website","url":"https:\/\/www.naveedulhaq.com\/","name":"Naveed Ul-Haq's blog","description":"AI, Optimizely, Azure &amp; more","publisher":{"@id":"https:\/\/www.naveedulhaq.com\/#\/schema\/person\/dd6db5980b965fcae41e096d357c65c9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.naveedulhaq.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/www.naveedulhaq.com\/#\/schema\/person\/dd6db5980b965fcae41e096d357c65c9","name":"Naveed Ul-Haq","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g","caption":"Naveed Ul-Haq"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/362536aba6cc66917d7558cacd015a81c7cdf1a69b9a28c994764847c487b692?s=96&d=mm&r=g"},"description":"I lead engineering delivery teams for digital commerce and digital experience platforms, combining hands-on architecture experience with strong delivery governance. Over 20+ years, I\u2019ve built and led cross\u2011functional teams (engineering, BA, QA) delivering modern cloud solutions on Azure, microservices, APIs and eCommerce\/CMS platforms. My recent focus includes AI-enabled commerce automation: product ingestion and enrichment workflows, content optimisation for SEO and shopping feeds, and agentic tooling to improve marketing and accessibility workflows. I\u2019m passionate about building high-performing teams, establishing quality\/release standards, and delivering measurable outcomes across performance, reliability, and speed of change.","sameAs":["https:\/\/www.naveedulhaq.com","https:\/\/www.linkedin.com\/in\/naveedulhaq\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/posts\/1282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/comments?post=1282"}],"version-history":[{"count":0,"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/posts\/1282\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/media\/599"}],"wp:attachment":[{"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/media?parent=1282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/categories?post=1282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.naveedulhaq.com\/index.php\/wp-json\/wp\/v2\/tags?post=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}