Azure 認知搜尋中的資料匯入

在 Azure 認知搜尋中,查詢會針對載入至搜尋索引的使用者擁有內容而執行。 本文描述兩個用於填入索引的基本工作流程:以程式設計方式將資料「推送」至索引,或使用搜尋索引子「提取」資料。

無論使用哪一種方法,目標都是從外部資料源載入資料。 雖然您可以建立空的索引,但在您新增內容之前無法查詢該索引。

注意

如果 AI 擴充是解決方案需求,您必須使用提取模型 (索引子) 載入索引。 技能集會附加至索引子,且不會獨立執行。

將資料推送到索引

用來以程式設計方式將資料傳送至 Azure 認知搜尋的推送模型是最具彈性的方法,原因如下:

  • 首先,沒有資料來源類型的限制。 資料集必須包含對應至索引結構描述的 JSON 文件,但資料可以來自任何地方。

  • 其次,沒有執行頻率的限制。 您可以視需要經常將變更推送到索引。 若應用程式需要低延遲 (例如,如果您需要讓搜尋作業與動態庫存資料庫保持同步),推送模式是您的唯一選擇。

  • 第三,您可以個別或以批次方式上傳文件,每個批次最多 1000 個文件,或每個批次 16 MB,以先到者為準。

  • 第四,連線能力和安全性擷取檔完全受到控制。 相反地,索引子連線會使用認知搜尋中提供的安全性功能進行驗證。

如何將資料推送到 Azure 認知搜尋索引

您可以使用下列 API,將單一或多份文件載入索引中:

目前沒有工具可支援透過入口網站推送資料。

如需推送 API 的簡介,請參閱:

編制索引動作:upload、merge、mergeOrUpload、delete

您可以根據文件控制編製索引動作的類型,進而指定文件是否應該完整上傳、與現有文件內容合併,或將其刪除。

無論您使用 REST API 還是 SDK,都支援下列文件作業進行資料匯入:

  • Upload 動作類似 "upsert",如果是新文件,就會插入該文件,如果文件已經存在,就會更新或取代該文件。 如果文件遺漏索引所需的值,則文件欄位的值會設定為 null。

  • merge 會更新已經存在的文件,而且會使找不到的文件失敗。 合併會取代現有的值。 基於這個原因,請務必檢查包含多個值的集合欄位,例如類型為 Collection(Edm.String) 的欄位。 例如,如果 tags 欄位以 ["budget"] 的值開始,而且使用 ["economy", "pool"] 執行合併,則 tags 欄位的最終值為 ["economy", "pool"]。 其不會是 ["budget", "economy", "pool"]

  • 如果文件存在,mergeOrUpload 的行為就像 merge 一樣,而如果文件是新的,則像 upload 一樣。

  • delete 會從索引中刪除整份文件。 如果想要移除個別欄位,請改用 merge,將有問題的欄位設定為 null。

將資料提取到索引中

提取模型會將支援的資料來源編目,並自動將資料上傳到您的索引。 在 Azure 認知搜尋中,這項功能是透過「索引子」來實作,目前適用於下列平台:

索引子可將索引連接到資料來源 (通常是資料表、檢視或對等結構),並將來源欄位對應至索引中的對等欄位。 在執行期間,資料列集會自動轉換為 JSON 並載入指定的索引。 所有索引子都支援排程,以便您可以指定資料重新整理的頻率。 如果資料來源支援索引子,則大部分的索引子都會提供變更追蹤。 除了辨識新文件,索引子還會追蹤現有文件的變更和刪除,讓您不必主動管理索引中的資料。

如何將資料提取至 Azure 認知搜尋索引

索引子功能會在 Azure 入口網站REST API 以及 .NET SDK中出現。

使用入口網站的優點是 Azure 認知搜尋通常可藉由讀取來源資料集的中繼資料,產生預設的索引結構描述。 直到處理索引後,您才可以修改產生的索引,而後只允許不需要重新編製索引的結構描述編輯。 如果變更影響結構描述本身,您必須重建索引。

透過搜尋總管確認資料匯入

對文件上傳執行初步檢查的快速方法是使用入口網站中的搜尋總管

Azure 入口網站中 [搜尋總管] 命令的螢幕擷取畫面。

此總管可讓您查詢索引,而不需撰寫任何程式碼。 搜尋體驗是以預設設定為基礎,例如簡單語法和預設 searchMode 查詢參數。 結果會以 JSON 格式傳回,以便您檢查整份文件。

以下是您可以在 [搜尋總管] 中執行的範例查詢。 "HotelId" 是 hotels-sample-index 的文件索引鍵。 篩選條件會提供特定文件的文件識別碼:

$filter=HotelId eq '50'

如果您使用 REST,此查閱查詢會達成相同的目的。

另請參閱