分享方式:


Azure AI 搜尋中的 OData 全文檢索搜尋函式 - search.ismatchsearch.ismatchscoring

Azure AI 搜尋支援透過 和 search.ismatchscoring 函式在 OData 篩選運算式 search.ismatch 內容 中進行全文檢索搜尋。 這些函式可讓您使用搜尋 API 的最上層 search 參數 ,將全文檢索搜尋與嚴格的布林值篩選結合在一起。

注意

search.ismatchscoringsearch.ismatch 式只有在搜尋 API 中的篩選中 才支援。 建議 自動完成 API 不支援 它們。

語法

下列 EBNF ( Extended Backus-Naur Form ) 會定義 和 search.ismatchscoring 函式的 search.ismatch 文法:

search_is_match_call ::=
    'search.ismatch'('scoring')?'(' search_is_match_parameters ')'

search_is_match_parameters ::=
    string_literal(',' string_literal(',' query_type ',' search_mode)?)?

query_type ::= "'full'" | "'simple'"

search_mode ::= "'any'" | "'all'"

您也可以使用互動式語法圖表:

注意

如需完整的 EBNF,請參閱 Azure AI 搜尋 的 OData 運算式語法參考。

search.ismatch

search.ismatch 式會將全文檢索搜尋查詢評估為篩選運算式的一部分。 符合搜尋查詢的檔將會在結果集中傳回。 此函式的下列多載可供使用:

  • search.ismatch(search)
  • search.ismatch(search, searchFields)
  • search.ismatch(search, searchFields, queryType, searchMode)

參數定義于下表中:

參數名稱 類型 描述
search Edm.String 搜尋查詢 (在 簡單 完整的 Lucene 查詢語法中)。
searchFields Edm.String 要搜尋的可搜尋欄位逗號分隔清單;預設為索引中所有可搜尋的欄位。 在 參數中使用 search 欄位搜尋 時,Lucene 查詢中的欄位規範會覆寫此參數中指定的任何欄位。
queryType Edm.String 'simple''full' ;預設為 'simple' 。 指定 參數中 search 所使用的查詢語言。
searchMode Edm.String 'any''all' ,預設為 'any' 。 指出參數中 search 是否有任何或所有搜尋字詞必須相符,才能將檔計算為相符專案。 在 參數中使用 search Lucene Boolean 運算子 時,其優先順序會高於此參數。

上述所有參數都相當於搜尋 API 中的對應 搜尋要求參數。

search.ismatch 式會傳回 類型的 Edm.Boolean 值,其可讓您使用布林 邏輯運算子 與其他篩選子運算式一起撰寫。

注意

Azure AI 搜尋不支援在 search.ismatch Lambda 運算式中使用 或 search.ismatchscoring 內部。 這表示無法在相同物件上將全文檢索搜尋相符專案與嚴格篩選相符專案相互關聯的物件集合上寫入篩選。 如需這項限制和範例的詳細資訊,請參閱 針對 Azure AI 搜尋 中的收集篩選器進行疑難排解。 如需此限制存在原因的詳細資訊,請參閱 瞭解 Azure AI 搜尋 中的集合篩選。

search.ismatchscoring

函式與 函 search.ismatchscoring 式一樣 search.ismatch ,會傳回 true 符合傳遞為參數之全文檢索搜尋查詢的檔。 兩者之間的差異在於,符合 search.ismatchscoring 查詢的檔相關性分數會對整體檔分數造成貢獻,而在 的情況下 search.ismatch ,檔分數將不會變更。 此函式的下列多載可與 的參數相同 search.ismatch

  • search.ismatchscoring(search)
  • search.ismatchscoring(search, searchFields)
  • search.ismatchscoring(search, searchFields, queryType, searchMode)

search.ismatchsearch.ismatchscoring 函式都可以在相同的篩選運算式中使用。

範例

使用「海濱」一詞尋找檔。 此篩選查詢與 搭配 search=waterfront 搜尋要求 相同。

    search.ismatchscoring('waterfront')

尋找 「hostel」 一字且評分大於或等於 4 的檔,或具有 「motel」 一字且評等為 5 的檔。 請注意,若沒有 函式 search.ismatchscoring ,就無法表示此要求。

    search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5

尋找沒有「豪華」一詞的檔。

    not search.ismatch('luxury')

尋找片語 「ocean view」 或 rating 等於 5 的檔。 查詢 search.ismatchscoring 只會針對欄位 HotelNameRooms/Description 執行。

只比對分離第二個子句的檔也會傳回 -- 等於 5 的旅館 Rating 。 若要清楚說明這些檔與運算式的任何評分部分不符,則會傳回分數等於零的分數。

    search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5

在酒店描述中,尋找 「hotel」 和 「airport」 字詞在彼此的 5 個字以內的檔,以及至少部分房間不允許吸煙的檔。 此查詢會使用 完整的 Lucene 查詢語言

    search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)

尋找具有以 [描述] 欄位中字母 「lux」 開頭之單字的檔。 此查詢會搭配 search.ismatch 使用 前置詞搜尋

    search.ismatch('lux*', 'Description')

下一步