在 Azure AI 搜尋服務中建立索引
在 Azure AI 搜尋服務中,查詢要求會以搜尋索引中的可搜尋文字為目標。
在本文中了解定義和發佈搜尋索引的步驟。 建立索引時,系統會在搜尋服務上建立實體資料結構。 當索引定義存在,載入索引作業會以個別工作的形式執行。
必要條件
寫入權限。 您可以透過要求上的系統管理 API 金鑰來授與權限。 或者,如果您使用角色型存取控制,請以搜尋參與者角色的成員身分傳送要求。
了解您想要編製索引的資料。 建立索引是結構描述定義練習,因此您應該具有明確的想法,確認您想設定哪個來源欄位,使其具備可搜尋、可擷取、可篩選、可面向化和可排序等特性 (請參閱結構描述檢查清單以取得指引)。
您也必須在來源資料中具有唯一欄位,其可用於索引中的文件索引鍵 (或識別碼)。
穩定的索引位置。 目前不支援將現有索引移至不同的搜尋服務。 重新瀏覽應用程式需求,並確定您現有的搜尋服務、其容量和位置皆已符合需求。
最後,針對您所能建立的物件數目,所有服務層級都具有索引限制。 例如,如果在免費層上進行實驗,則您在任何指定時間都只能使用三個索引。 索引內的複雜欄位和集合數目會有所限制。
文件索引鍵
搜尋索引會具備一個必要欄位:文件索引鍵。 文件索引鍵是搜尋文件的唯一識別碼。 在 Azure AI 搜尋服務中,文件索引鍵必須是字串,而且必須源自資料來源中的唯一值,提供要編製索引的內容。 搜尋服務不會產生索引鍵值,但在某些案例中(例如 Azure 數據表索引器)會合成現有的值,為編製索引的檔建立唯一索引鍵。
在累加式索引編製期間,當新和更新的內容完成索引編製,系統就會新增具有新索引鍵的內送文件,或者合併或覆寫具有現有索引鍵的內送文件,上述情形是取決於索引欄位是否已填入資料或為 Null。
結構描述檢查清單
使用此檢查清單來協助制定搜尋索引的設計決策。
請檢閱命名慣例,讓索引和欄位名稱符合命名規則。
請檢閱支援的資料類型。 資料類型會影響欄位的使用方式。 例如,您可以篩選數值內容,但無法搜尋全文。 最常見的資料類型為
Edm.String
,該類型用於可搜尋的文字,並使用全文搜尋引擎進行權杖化和查詢。識別文件索引鍵。 文件索引鍵是索引需求。 其是單一字串欄位,而且會從包含唯一值的來源資料欄位進行填入。 例如,如果您要從 Blob 儲存體編製索引,則中繼資料儲存體路徑通常會用來作為文件索引鍵,因為該路徑會唯一識別容器中的每個 Blob。
在資料來源中識別特定欄位,這些欄位會提供索引中的可搜尋內容。 可搜尋內容包括使用全文搜尋引擎所查詢的短或長字串。 如果內容較詳細 (簡短片語或較長的句構),請使用不同的分析器進行實驗,以查看文字的權杖化方式。
欄位屬性指派會決定搜尋行為,以及搜尋服務上索引的實體表示法。 許多客戶會反覆決定欄位的指定方式。 若要加速流程,請使用範例資料來執行作業,以便輕鬆進行卸除和重建。
識別哪些來源欄位可作為篩選。 數值內容和簡短文字欄位,特別是具有重複值的欄位都是不錯的選擇。 使用篩選時,請記得:
您可以選擇將可篩選的欄位用於多面向導覽。
由於系統會以任意順序傳回可篩選欄位,因此也請考慮將欄位設為可排序。
決定是否要使用預設分析器 (
"analyzer": null
) 或不同的分析器。 分析器可用來在索引編製和查詢執行期間將文字欄位權杖化。若為多語言字串,請考慮語言分析器。
若為連字號連接的字串或特殊字元,請考慮特製化分析器。 其中一個範例是關鍵字,其會將欄位的整個內容視為單一語彙基元。 此行為適合用於郵遞區號、識別碼和產品名稱等資料。 如需詳細資訊,請參閱部分字詞搜尋和具有特殊字元的模式。
注意
針對在索引編製期間權杖化的字詞,全文搜尋功能會在這些字詞間運行。 如果查詢無法傳回您預期的結果,請測試權杖化功能,以確認字串確實存在。 您可以在字串上嘗試使用不同的分析器,查看各種分析器產生權杖的方式。
建立索引
當您準備好建立索引時,請使用可傳送要求的搜尋用戶端。 您可以使用 Azure 入口網站或 REST API 來進行早期開發和概念證明測試。
進行開發時,請考量頻繁進行的重建作業。 由於實體結構是在服務中建立,因此許多修改作業都需要卸除和重新建立索引。 您可以考慮處理部份的資料,讓重建更快速。
若透過入口網站來設計索引,便需要遵循特定資料類型的需求或結構描述規則,例如不允許數值欄位上具有全文搜尋功能。
登入 Azure 入口網站。
在搜尋服務 [概觀] 頁面中,選擇其中一個選項來建立搜尋索引:
- 新增索引:用於指定索引結構描述的內嵌編輯器
- 匯入資料精靈
精靈是一種端對端工作流程,可建立索引子、資料來源和已完成的索引。 同時也可以載入資料。 如果這不是您想要的功能,請改用 [新增索引]。
下列螢幕擷取畫面醒目提示命令列上的 [新增索引] 和 [匯入資料]。 建立索引之後,您可以在 [索引] 索引標籤中再次找到該索引。
提示
在入口網站中建立索引後,您可以複製 JSON 表示法,並將其新增至應用程式程式碼。
針對跨來源查詢來設定 corsOptions
索引結構描述包含設定 corsOptions
的區段。 根據預設,用戶端 JavaScript 無法呼叫任何 API,因為瀏覽器會阻止所有跨原始來源的要求。 若要允許對索引進行跨原始來源查詢,請設定 corsOptions 屬性來啟用 CORS (跨原始來源資源共用)。 基於安全緣故,僅查詢 API 才能支援 CORS。
"corsOptions": {
"allowedOrigins": [
"*"
],
"maxAgeInSeconds": 300
您可以為 CORS 設定下列屬性:
allowedOrigins (必要):這是被允許存取索引的原始來源清單。 允許從這些原始來源提供的 JavaScript 程式碼查詢您的索引 (假設呼叫者提供有效的金鑰或具有權限)。 每個原始來源的形式通常是
protocol://<fully-qualified-domain-name>:<port>
(儘管經常會忽略<port>
)。 如需詳細資訊,請參閱 跨原始來源資源共用 (Wikipedia)。如果您想要允許所有原始來源進行存取,請在 allowedOrigins 陣列中包含
*
作為單一項目。 「此做法並不建議用於實際執行環境搜尋服務」,但對於開發和偵錯作業通常很有幫助。maxAgeInSeconds (選用):瀏覽器會使用這個值,來判斷快取 CORS 預檢回應的持續期間 (以秒為單位)。 這必須是非負數的整數。 快取期間越長可提供越好的效能,但其會延長 CORS 原則需要生效的時間量。 如果未設定此值,則會使用預設持續時間 (5 分鐘)。
現有索引上允許的更新
建立索引會在搜尋服務上建立實體資料結構 (檔案和反轉的索引)。 建立索引之後,您可以使用更新索引來影響變更,這是取決於修改內容是否會讓這些實體結構無效。 在索引中建立欄位之後,就無法變更大部分的欄位屬性。
或者,您也可以建立索引別名,以作為應用程式程式碼中的穩定參考。 您可以更新索引別名以指向較新的索引版本,而無須更新程式碼。
為了將設計程序中的流失情形最小化,下表說明結構描述中固定和彈性的元素。 變更固定元素需要重建索引,而彈性元素則可以隨時變更,不會影響實體實作。
Element | 可以更新嗎? |
---|---|
名稱 | No |
機碼 | No |
欄位名稱和類型 | No |
欄位屬性 (可搜尋、可篩選、可面向化、可排序) | No |
欄位屬性 (可擷取) | Yes |
分析器 | 您可以在索引中新增和修改自訂分析器。 針對字串欄位的分析器指派,您只能修改 searchAnalyzer 。 所有其他指派和修改都需要重建。 |
評分設定檔 | Yes |
建議工具 | No |
跨原始來源資源分享 (CORS) | Yes |
加密 | Yes |
下一步
請參閱下列連結中的文章,了解如何使用資料來載入索引,或使用同義字對應來擴充索引。