Azure AI 搜尋服務中的查詢
Azure AI 搜尋支援各種案例的查詢建構,從自由格式文字搜尋到高度指定的查詢模式,再到向量搜尋。 所有查詢都會在儲存可搜尋內容的搜尋索引上執行。
查詢類型
查詢形式 | 可搜尋的內容 | 描述 |
---|---|---|
全文檢索搜尋 | 權杖化詞彙的反向索引。 | 全文查詢會逐一查看為了能夠快速掃描而建構的反向索引,過程中可能會在任意數目的搜尋文件中,於任何欄位內找到相符項目。 文字會經過分析並加以權杖化,以進行全文檢索搜尋。 |
向量搜尋 | 已產生內嵌的向量索引。 | 向量查詢會逐一查看搜尋索引中的向量欄位。 |
混合式搜尋 | 上述所有項目都在單一搜尋索引中。 | 在單一查詢要求中結合文字搜尋和向量搜尋。 文字搜尋適用於「可搜尋」和「可篩選」欄位中的純文字內容。 向量搜尋適用於向量欄位中的內容。 |
其他 | 純文字和英數字元內容。 | 原始內容 (從來源文件中逐字提取) 支援篩選條件和模式比對查詢,例如地理空間搜尋、模糊搜尋和字段搜尋。 |
本文將焦點放在最後一個類別:適用於純文字和英數字元內容的查詢,從原始來源中完整擷取、用於篩選條件和其他特殊查詢形式的查詢。
自動完成和建議的查詢
自動完成或建議的結果可替代 search
,其會在「輸入便搜尋」體驗中,根據所輸入的部分字串 (在每個字元之後) 引發連續的查詢要求。 如本教學課程所述,您可以一起或分開使用 autocomplete
和 suggestions
參數,但不能將其與 search
搭配使用。 已完成的字詞和建議的查詢都衍生自索引內容。 引擎永遠不會傳回索引中不存在的字串或建議。 如需詳細資訊,請參閱自動完成 (REST API) 和建議 (REST API)。
篩選條件搜尋
篩選條件在以 Azure AI 搜尋服務為基礎的應用程式中廣泛使用。 在應用程式頁面上,篩選條件通常會在連結導覽結構中視覺化為 Facet,以進行使用者導向的篩選。 篩選條件也會在內部用來公開索引內容片段。 例如,您可以對產品類別使用篩選條件來初始化搜尋頁面,如果索引同時包含英文和法文欄位,則也可以對語言使用篩選條件。
您可能也需要使用篩選條件來叫用特製化查詢形式,如下表所述。 您可以搭配未指定的搜尋 (search=*
) 或搭配包含字詞、片語、運算子和模式的查詢字串來使用篩選條件。
篩選條件案例 | 描述 |
---|---|
範圍篩選 | 在Azure AI 搜尋服務中,會使用篩選參數來建置範圍查詢。 如需詳細資訊和範例,請參閱範圍篩選條件範例。 |
多面向導覽 | 在多面向導覽樹狀結構中,使用者可以選取 Facet。 在由篩選條件支援時,每次點擊都會縮小搜尋結果的範圍。 每個 Facet 都會由篩選條件支援,以排除不再符合 Facet 所提供準則的文件。 |
注意
在處理查詢的期間,系統不會分析篩選條件運算式中所使用的文字。 系統會將所輸入的文字假設為會在相符項目成功或失敗的逐字區分大小寫字元模式。 系統會使用 OData 語法來建構篩選條件運算式,並將其傳入到您索引的所有filter
可篩選欄位內的 參數。 如需詳細資訊,請參閱 Azure AI 搜尋服務中的篩選條件。
地理空間搜尋
地理空間搜尋會比對位置的緯度和經度座標,以獲得「尋找附近地點」或地圖型搜尋體驗。 在 Azure AI 搜尋服務中,您可以遵循下列步驟來實作地理空間搜尋:
- 定義下列其中一種類型的可篩選欄位:Edm.GeographyPoint、Collection(Edm.GeographyPoint)、Edm.GeographyPolygon。
- 確認傳入的文件包含適當的座標。
- 索引編製完成後,請建置使用篩選條件和地理空間函式的查詢。
地理空間搜尋使用公里來表示距離。 座標以下列格式指定:(longitude, latitude
)。
以下是地理空間搜尋篩選條件的範例。 此篩選條件會尋找搜尋索引中的其他 Location
欄位,其座標在地理點的 300 公里半徑內 (此範例中為華盛頓特區)。 它會在結果中傳回地址資訊,並包含根據位置進行自我瀏覽的選擇性 facets
子句。
POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
{
"count": true,
"search": "*",
"filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
"facets": [ "Address/StateProvince"],
"select": "HotelId, HotelName, Address/StreetAddress, Address/City, Address/StateProvince",
"top": 7
}
如需詳細資訊和範例,請參閱地理空間搜尋範例。
文件查閱
相較於先前所述的查詢形式,此形式會依識別碼擷取單一搜尋文件,但不會有對應的索引搜尋或掃描。 其只會要求並傳回一份文件。 當使用者在搜尋結果中選取某個項目時,典型的回應是擷取文件並填入詳細資料頁面與欄位,而文件查閱便是能夠對此提供支援的作業。
進階搜尋:模糊、萬用字元、鄰近、規則運算式
進階查詢形式會仰賴完整 Lucene 剖析器和運算子來觸發特定查詢行為。
查詢類型 | 使用方式 | 範例和詳細資訊 |
---|---|---|
欄位搜尋 | search 參數、queryType=full |
建置以單一欄位為目標的複合查詢運算式。 欄位搜尋範例 |
模糊搜尋 | search 參數、queryType=full |
比對具有類似建構或拼法的字詞。 模糊搜尋範例 |
鄰近搜尋 | search 參數、queryType=full |
尋找文件中彼此相近的字詞。 鄰近搜尋範例 |
詞彙提升 | search 參數、queryType=full |
如果文件包含已提升的字詞 (相較於其他未提升的字詞),則將文件的順位提高。 字詞提升範例 |
規則運算式搜尋 | search 參數、queryType=full |
根據規則運算式的內容來比對。 規則運算式範例 |
萬用字元或首碼搜尋 | search 參數與 *~ 或 ? 、queryType=full |
根據首碼和波狀符號 (~ ) 或單一字元 (? ) 來比對。 萬用字元搜尋範例 |
下一步
若要進一步了解如何實作查詢,請檢閱每個語法的範例。 如果您沒有使用過全文檢索搜尋,或許也可以進一步了解查詢引擎的功能。