Azure AI Search에서 쿼리

Azure AI Search는 자유 형식 텍스트 검색부터 상당히 구체적으로 지정된 쿼리 패턴, 벡터 검색에 이르기까지 광범위한 시나리오에 대한 쿼리 구문을 지원합니다. 모든 쿼리는 검색 가능한 콘텐츠를 저장하는 검색 인덱스를 통해 실행됩니다.

쿼리 유형

쿼리 양식 검색 가능한 콘텐츠 설명
전체 텍스트 검색 토큰화된 용어의 반전 인덱스. 전체 텍스트 쿼리는 빠르게 검사하도록 구조화되어 있는 반전 인덱스를 반복합니다. 이러한 인덱스는 검색 문서의 수에 상관없이 잠재적으로 모든 필드에서 일치 항목을 찾을 수 있습니다. 전체 텍스트 검색을 위해 텍스트를 분석하고 토큰화합니다.
벡터 검색 생성된 포함의 벡터 인덱스. 벡터 쿼리는 검색 인덱스의 벡터 필드를 반복합니다.
하이브리드 검색 위의 모든 항목(단일 검색 인덱스). 텍스트 검색 및 벡터 검색을 단일 쿼리 요청에 결합합니다. 텍스트 검색은 "검색 가능" 및 "필터링 가능" 필드의 일반 텍스트 콘텐츠에 작동합니다. 벡터 검색은 벡터 필드의 콘텐츠에 작동합니다.
기타 일반 텍스트 및 영숫자 콘텐츠. 원시 콘텐츠, 원본 문서에서 축자 추출, 지역 공간 검색, 유사 항목 검색 및 필드 검색과 같은 필터 및 패턴 일치 쿼리를 지원합니다.

이 문서에서는 마지막 범주: 필터 및 기타 특수 쿼리 양식에 사용되는 원본 원본에서 그대로 추출된 일반 텍스트 및 영숫자 콘텐츠에 작동하는 쿼리를 중점적으로 다룹니다.

자동 완성 및 제안된 쿼리

자동 완성 또는 제안된 결과는 입력 시 검색 환경에서 부분 문자열 입력(각 문자 뒤)을 기준으로 연속 쿼리 요청을 실행하는 search의 대안입니다. 이 연습에 설명된 대로 autocompletesuggestions 매개 변수를 함께 또는 따로 사용할 수는 있지만, search와 함께 사용할 수는 없습니다. 완료된 용어와 제안된 쿼리는 모두 인덱스 콘텐츠에서 파생됩니다. 엔진은 인덱스에 존재하지 않는 문자열 또는 제안을 반환하지 않습니다. 자세한 내용은 자동 완성(REST API)제안(REST API)을 참조하세요.

필터는 Azure AI Search를 기준으로 하는 앱에서 널리 사용됩니다. 애플리케이션 페이지에서 필터는 사용자가 직접 필터링할 수 있도록 링크 탐색 구조에서 패싯으로 시각화되는 경우가 많습니다. 또한 필터는 인덱싱된 콘텐츠의 조각을 노출하기 위해 내부적으로 사용됩니다. 예를 들어 제품 범주에 대한 필터를 사용하여 검색 페이지를 초기화하거나, 인덱스에 영어와 프랑스어 필드가 모두 포함된 경우 언어를 초기화할 수 있습니다.

다음 표에 설명된 바와 같이 특수 쿼리 양식을 호출하는 필터 필요할 수도 있습니다. 지정되지 않은 검색(search=*) 또는 용어, 구, 연산자, 패턴이 포함된 쿼리 문자열을 사용하여 필터를 사용할 수 있습니다.

필터 시나리오 설명
범위 필터 Azure AI Search에서 범위 쿼리는 필터 매개 변수를 사용하여 작성됩니다. 자세한 내용과 예제는 범위 필터 예제를 참조하세요.
패싯 탐색 패싯 탐색 트리에서 사용자는 패싯을 선택할 수 있습니다. 필터로 백업되는 경우 클릭할 때마다 검색 결과가 좁아지게 됩니다. 각 패싯은 패싯에서 제공하는 조건과 더 이상 일치하지 않는 문서를 제외하는 필터를 통해 뒷받침됩니다.

참고 항목

필터 식에 사용되는 텍스트는 쿼리를 처리하는 동안 분석되지 않습니다. 텍스트 입력은 일치에서 성공하거나 실패하는, 대/소문자 구분 문자 패턴으로 가정됩니다. 필터 식은 OData 구문을 사용하여 생성되고 인덱스의 모든 필터링 가능 필드에 있는 filter 매개 변수로 전달됩니다. 자세한 내용은 Azure AI 검색의 필터를 참조하세요.

지리 공간적 검색은 위치의 위도 및 경도 좌표에서 "내 근처 찾기" 또는 지도 기반 검색 환경과 일치합니다. Azure AI Search에서 다음 단계에 따라 지리 공간적 검색을 구현할 수 있습니다.

지리 공간적 검색은 거리에 킬로미터를 사용합니다. 좌표는 (longitude, latitude 형식으로 지정됩니다.

지리 공간적 검색을 위한 필터의 예는 다음과 같습니다. 이 필터는 지리 지점의 반경 300km 내에 좌표가 있는 검색 인덱스의 다른 Location 필드를 찾습니다(이 예제의 경우 워싱턴 D.C.). 결과에 주소 정보를 반환하고 위치별 자체 탐색을 위한 선택적 facets 절을 포함합니다.

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2023-07-01-Preview
{
    "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
}

자세한 내용과 예제는 지리 공간적 검색 예제를 참조하세요.

문서 조회

앞에서 설명한 쿼리 양식과 달리 이 쿼리는 해당 인덱스 검색 또는 검사 없이 단일 ID별 검색 문서를 검색합니다. 한 문서만 요청되고 반환됩니다. 사용자가 검색 결과에서 한 항목을 선택하는 경우 문서를 검색하고 필드를 사용하여 상세 정보 페이지를 채우는 것이 일반적인 응답입니다. 문서 조회는 이를 지원하는 작업입니다.

고급 검색: 유사 항목, 와일드카드, 근접, 정규식

고급 쿼리 형태는 전체 Lucene 파서 및 특정 쿼리 동작을 트리거하는 연산자에 따라 달라집니다.

쿼리 유형 사용 예 및 추가 정보
필드 지정 검색 search 매개 변수, queryType=full 단일 필드를 대상으로 복합 쿼리 식을 작성합니다.
필드 지정 검색 예제
유사 항목 검색 search 매개 변수, queryType=full 유사한 구조 또는 철자가 포함된 용어를 검색합니다.
유사 항목 검색 예제
근접 검색 search 매개 변수, queryType=full 문서에서 서로 가까이 있는 용어를 찾습니다.
근접 검색 예제
용어 상승 search 매개 변수, queryType=full 승격된 용어가 포함된 문서는 그렇지 않은 다른 문서보다 상대적으로 높은 순위를 매깁니다.
용어 상승 예제
정규식 검색 search 매개 변수, queryType=full 정규식의 콘텐츠를 기반으로 검색합니다.
정규식 예제
와일드 카드 또는 접두사 검색 search 매개 변수(*~ 또는 ?, queryType=full 사용) 접두사와 물결표(~) 또는 단일 문자(?)를 기반으로 검색합니다.
와일드 카드 검색 예제

다음 단계

쿼리 구현에 대한 자세한 내용은 각 구문의 예제를 검토하세요. 전체 텍스트 검색을 처음 사용하는 경우 쿼리 엔진이 수행하는 작업을 자세히 살펴보는 것도 마찬가지로 좋은 선택일 수 있습니다.