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')

下一步