1744237758
2025-04-09 21:49:00
Optimizely Paas CMSサイトの検索機能を高めたいですか? Azure AI検索は、必要なツールにすぎない可能性があります!このブログでは、CMSをMicrosoftの高度なAI駆動型検索プラットフォームに接続して、定期的なキーワード検索を上回る高速でスマートな検索エクスペリエンスを作成する方法について説明します。
Azure AI検索とは何ですか?
Azure AI検索は、AIを搭載したMicrosoftのクラウドベースの検索サービスです。フルテキスト検索、ファセットナビゲーション、およびマシンラーニング機能(言語理解やセマンティック検索など)を利用して、大量のコンテンツをインデックス、検索、分析することができます。
なぜそれが素晴らしいのか
- 超高速でスケーラブルな検索エクスペリエンス。
- 強化された関連性のための組み込みAI。
- 他のAzureサービスとのスムーズな統合。
要するに、それはユーザーフレンドリーなインテリジェント検索です。
Optimizely CMSとの統合の利点
メリットに入る前に、Azure AI検索がOptimizelyのネイティブ検索機能とどのように比較されるかを少し考えてみましょう。 Optimizely Search(LuceneまたはFind/Search&Navigationに依存している)は、簡単なキーワード検索と基本フィルターに適しており、CMSに密接に結びついています。ただし、Azureがすぐに提供する高度なAI機能、スケーラビリティ、または柔軟性は提供されません。 Azure AI Searchは、セマンティック検索、認知機能強化、外部データインデックスなどの機能を備えた検索エクスペリエンスを強化し、複雑な検索要件を持つエンタープライズレベルのサイトに最適です。
これらの2つのソリューションをマージすることが有益な理由は次のとおりです。
- AIベースの関連性を備えた検索エクスペリエンスの改善。
- スケーラブルで信頼できる – Azureが重い持ち上げを管理できるようにします。
- APIまたはジョブを使用したCMSからのカスタマイズされたコンテンツインデックス。
- フィルタリング、ファセット、自動コンプリートなどの高度なオプション。
Azure AI検索の開始方法
Azure AI検索を設定するには、次の手順に従ってください。
- Azureポータルにログインし、AI検索を探します。
- [作成]をクリックして、次のように構成します。
- 名前
- リソースグループ
- 価格層(無料層を含む!)
- 地域
作成したら、検索サービス名と管理者APIキーを確認してください。データを送信および取得するには、これらが必要です。
Serviceapiを使用してAzure AI検索と更新されたコンテンツを同期するカスタムスケジュールされたジョブ
Optimizely Serviceapiを利用することにより、更新されたコンテンツを効果的に取得し、Azure AI検索と同期することができます。このプロセスは、サイト全体を再インデックスする必要性を回避し、パフォーマンスを向上させるのに役立ちます。
[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(contentJson).EnumerateArray()
.Select(content => new Dictionary
{
["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://.search.windows.net/indexes//docs/index?api-version=2021-04-30-Preview")
{
Content = new StringContent(json, Encoding.UTF8, "application/json")
};
request.Headers.Add("api-key", "");
var result = _httpClient.SendAsync(request).Result;
return result.IsSuccessStatusCode ? "Success" : "Failed to index in Azure Search.";
}
}
Serviceapi応答をさらにフィルタリングおよび変換して、インデックススキーマに合わせて変換できます。
カスタムページタイプとコントローラー/ビューアズール検索をクエリします
検索結果ページとして機能する新しいページタイプを作成します。
ページタイプを検索します
[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; }
}
ページコントローラー
public class AzureSearchPageController : PageController
{
public ActionResult Index(AzureSearchPage currentPage, string q = "")
{
var results = new List();
if (!string.IsNullOrEmpty(q))
{
var url = $"https://.search.windows.net/indexes//docs?api-version=2021-04-30-Preview&search={q}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("api-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);
}
}
ページビューを検索します
@model AzureSearchPage
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@foreach (var result in ViewBag.Results as List)
{
- @result
}
Optimizely CMS / Azure AI検索高度なユースケース
立ち上がって実行したら、次のレベルのアイデアを次に示します。
- セマンティック検索: キーワードだけでなく、Azureに意図を理解させてください。
- オートコンプリートと提案: 検索タイプの機能に接続します。
- ファセットナビゲーション: カテゴリ、タグなどによってフィルターを作成します。
- ai entrichment: Azureのスキルセットを使用してメタデータを抽出し、画像またはOCR PDFを分析します。
- 多言語検索: Azureは、箱から出して複数の言語で検索をサポートしています。
まとめ
Azure AI検索をOptimizely CMSと統合することで、サイト検索を基本的なものからBrilliantに真に進めることができます。少しセットアップといくつかのクリーンなコードを使用すると、ユーザーが高速でスマートな、スケーラブルなコンテンツの発見を強化しています。
詳細を確認してください Optimizelyコンテンツクラウド ブログ
#Optimizely #CMSとAzure #AI検索を統合します