Azure AI Search의 OData 전체 텍스트 검색 함수 - search.ismatchsearch.ismatchscoring

Azure AI Search는 및 함수를 통해 OData 필터 식컨텍스트에서 전체 텍스트 검색을 search.ismatchsearch.ismatchscoring 지원합니다. 이러한 함수를 사용하면 Search API의 최상위 search 매개 변수를 사용하는 것만으로는 불가능한 방식으로 전체 텍스트 검색을 엄격한 부울 필터링과 결합할 수 있습니다.

참고 항목

search.ismatchsearch.ismatchscoring 함수는 검색 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 Search에 대한 OData 식 구문 참조를 참조하세요.

search.ismatch

함수는 search.ismatch 전체 텍스트 검색 쿼리를 필터 식의 일부로 평가합니다. 검색 쿼리와 일치하는 문서가 결과 집합에 반환됩니다. 이 함수의 다음 오버로드를 사용할 수 있습니다.

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

매개 변수는 다음 표에 정의되어 있습니다.

매개 변수 이름 Type 설명
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 부울 연산자를 사용하는 경우 이 매개 변수보다 우선 적용됩니다.

위의 모든 매개 변수는 Search API의 해당 검색 요청 매개 변수와 동일합니다.

이 함수는 search.ismatch 부울 논리 연산자를 사용하여 다른 필터 하위 식으로 작성할 수 있는 형식 Edm.Boolean값을 반환합니다.

참고 항목

Azure AI Search는 람다 식 사용 search.ismatch 또는 search.ismatchscoring 내부를 지원하지 않습니다. 즉, 동일한 개체에 대한 엄격한 필터 일치 항목과 전체 텍스트 검색 일치 항목을 상호 연결할 수 있는 개체 컬렉션 필터를 작성할 수 없습니다. 이 제한 사항과 예제에 대한 자세한 내용은 Azure AI Search의 컬렉션 필터 문제 해결을 참조하세요. 이 제한 사항이 존재하는 이유에 대한 자세한 내용은 Azure AI Search의 컬렉션 필터 이해를 참조하세요.

search.ismatchscoring

함수와 search.ismatch 마찬가지로 함수는 search.ismatchscoring 매개 변수로 전달된 전체 텍스트 검색 쿼리와 일치하는 문서를 반환 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

"luxury"라는 단어가 없는 문서를 찾습니다.

    not search.ismatch('luxury')

"바다 보기" 또는 등급이 5인 문서를 찾습니다. 쿼리는 search.ismatchscoring 필드 HotelNameRooms/Description에 대해서만 실행됩니다.

분리의 두 번째 절과 일치하는 문서도 반환됩니다( 5인 호텔 Rating ). 해당 문서가 식의 점수가 매칭된 부분과 일치하지 않음을 분명히 하기 위해 점수가 0인 상태로 반환됩니다.

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

다음 단계