Azure AI Search에서 쿼리에 맞춤법 검사 추가

Important

맞춤법 수정은 추가 사용 약관에 따라 공개 미리 보기로 제공됩니다. Azure Portal, 미리 보기 REST API 및 베타 버전의 Azure SDK 라이브러리를 통해 사용할 수 있습니다.

검색 엔진에 도달하기 전에 쿼리에서 단어의 맞춤법을 수정하여 재현율을 높일 수 있습니다. speller 매개 변수는 모든 텍스트(비벡터) 쿼리 형식에 대해 지원됩니다.

필수 조건

  • 모든 지역에서 진행되는 기본 계층 이상의 검색 서비스

  • 지원되는 언어로 된 콘텐츠가 있는 기존 검색 인덱스

  • speller=lexiconqueryLanguage지원되는 언어로 설정된 쿼리 요청 맞춤법 검사는 search 매개 변수에 전달된 문자열에서 작동합니다. 필터, 유사 항목 검색, 와일드카드 검색, 정규식 또는 벡터 쿼리에는 지원되지 않습니다.

쿼리 요청에서 미리 보기 API를 지원하는 검색 클라이언트를 사용합니다. REST 클라이언트 또는 Azure SDK의 베타 릴리스를 사용할 수 있습니다.

클라이언트 라이브러리 버전
REST API 버전 2020-06-30-Preview 이상. 최신 미리 보기 API를 사용하는 것이 좋습니다. 2024-05-01-preview
Azure SDK for .NET 버전 11.5.0-beta.5
Java용 Azure SDK 버전 11.6.0-beta.5
JavaScript용 Azure SDK 버전 11.3.0-beta.8
Python용 Azure SDK 버전 11.4.0b3

다음 예제에는 기본 제공 hotels-sample 인덱스를 사용하여 간단한 텍스트 쿼리에 대한 맞춤법을 수정하는 과정이 나와 있습니다. 맞춤법 수정 항목이 없으면 쿼리에서 결과를 0개 반환합니다. 수정 항목이 있으면 쿼리에서 Johnson의 가족 지향 재정렬 결과를 1개 반환합니다.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
    "search": "famly acitvites",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "queryType": "simple",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

전체 Lucene으로 맞춤법 수정

텍스트 분석을 수행하는 개별 쿼리 용어의 맞춤법을 수정하므로, 일부 Lucene 쿼리에서는 맞춤법 검사기 매개 변수를 사용할 수 있지만 다른 쿼리에서는 사용할 수 없습니다.

  • 텍스트 분석을 우회하는 비호환 쿼리 양식에는 와일드카드, regex, 퍼지가 포함됩니다.
  • 호환되는 쿼리 양식에는 필드 지정 검색, 근접, 용어 상승이 포함됩니다.

이 예제에서는 전체 Lucene 구문과 맞춤법이 틀린 쿼리 용어를 사용하여 범주 필드에 대한 필드 지정 검색을 사용합니다. 맞춤법 검사기를 포함하면 "Suiite"의 오타가 수정되고 쿼리에 성공합니다.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview
{
    "search": "Category:(Resort and Spa) OR Category:Suiite",
    "queryType": "full",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "select": "Category",
    "count": true
}

의미 체계 순위 지정으로 맞춤법 수정

이 쿼리는 한 가지 용어를 제외한 모든 용어의 오타를 사용하여 관련 결과를 반환하도록 맞춤법을 수정합니다. 자세한 내용은 의미 순위매기기 구성을 참조하세요.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview    
{
    "search": "hisotoric hotell wiht great restrant nad wiifi",
    "queryType": "semantic",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Tags,Description",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

지원되는 언어

queryLanguage에 대한 유효한 값은 지원되는 언어 목록(REST API 참조)에서 복사된 다음과 같은 표에서 찾을 수 있습니다.

언어 queryLanguage
영어[EN] EN, EN-US(기본값)
스페인어[ES] ES, ES-ES(기본값)
프랑스어[FR] FR, FR-FR(기본값)
독일어[DE] DE, DE-DE(기본값)
네덜란드어[NL] NL, NL-BE, NL-NL(기본값)

참고 항목

이전에는 의미 순위매기기 기능이 공개 미리 보기에 있었지만 queryLanguage 매개 변수가 의미 순위매기기에도 사용되었습니다. 의미 순위매기기는 이제 언어에 구애받지 않습니다.

언어 분석기 고려 사항

영어가 아닌 콘텐츠를 포함하는 인덱스는 종종 영어가 아닌 필드에서 언어 분석기를 사용하여 모국어의 언어 규칙을 적용합니다.

언어 분석도 거치는 콘텐츠에 맞춤법 검사를 추가할 때 각 인덱싱 및 쿼리 처리 단계에서 동일한 언어를 사용하여 더 나은 결과를 얻을 수 있습니다. 예를 들어 "fr.microsoft" 언어 분석기를 사용해 필드의 콘텐츠를 인덱싱하고 나면 쿼리 및 맞춤법 검사가 모든 형식의 프랑스어 어휘집 또는 언어 라이브러리를 사용해야 합니다.

Azure AI Search에서 언어 라이브러리를 사용하는 방법을 요약하면 다음과 같습니다.

  • 언어 분석기는 인덱싱 및 쿼리 실행 중에 호출될 수 있으며 Apache Lucene(예: "de.lucene") 또는 Microsoft("de.microsoft) 중 하나입니다.

  • 맞춤법 검사 중에 호출되는 언어 어휘집은 지원되는 언어 표에 있는 언어 코드 중 하나를 사용하여 지정됩니다.

쿼리 요청에서 queryLanguage에 할당된 값이 speller에 적용됩니다.

참고 항목

언어 분석기를 사용하는 경우 다양한 속성 값의 언어 일관성은 매우 중요합니다. 언어와 관련 없는 분석기(키워드, 단순, 표준, 중지, 공백 또는 standardasciifolding.lucene 등)를 사용하는 경우 queryLanguage 값을 원하는 대로 지정할 수 있습니다.

검색 인덱스의 콘텐츠는 여러 언어로 구성될 수 있지만, 쿼리 입력은 한 가지 언어로 작성될 가능성이 높습니다. 검색 엔진에서는 queryLanguage, 언어 분석기 및 콘텐츠가 구성된 언어의 호환성을 확인하지 않으므로 잘못된 결과가 생성되지 않도록 적절히 쿼리 범위를 지정해야 합니다.

다음 단계