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

Important

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

검색 엔진에 도달하기 전에 쿼리에서 단어를 맞춤법 수정하여 회수를 향상시킬 수 있습니다. speller 매개 변수는 모든 텍스트(비벡터) 쿼리 형식에 대해 지원됩니다.

필수 조건

쿼리 요청에서 미리 보기 API를 지원하는 검색 클라이언트를 사용합니다. 미리 보기 API에 대한 REST 호출을 만들기 위해 수정한 REST 클라이언트 또는 코드를 사용할 수 있습니다. Azure SDK의 베타 릴리스를 사용할 수도 있습니다.

클라이언트 라이브러리 버전
REST API 버전 2020-06-30-Preview 이상. 현재 버전은 2023-10-01-Preview입니다.
.NET용 Azure SDK 버전 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

다음 예제에서는 기본 제공 호텔 샘플 인덱스로 간단한 텍스트 쿼리에 대한 맞춤법 수정을 보여 줍니다. 맞춤법 수정 없이 쿼리는 0개의 결과를 반환합니다. 수정을 통해 쿼리는 Johnson의 가족 지향 리조트에 대한 하나의 결과를 반환합니다.

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

전체 Lucene으로 맞춤법 수정

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

  • 텍스트 분석을 우회하는 호환되지 않는 쿼리 양식에는 wild카드, regex, 유사 항목이 포함됩니다.
  • 호환되는 쿼리 양식에는 필드 검색, 근접성, 용어 승격이 포함됩니다.

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

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-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=2020-06-30-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에서 언어 라이브러리를 사용하는 방법을 요약하려면 다음을 수행합니다.

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

참고 항목

다양한 속성 값에 대한 언어 일관성은 언어 분석기를 사용하는 경우에만 문제가 됩니다. 언어에 구애받지 않는 분석기(예: 키워드(keyword), 단순, 표준, 중지, 공백 또는standardasciifolding.lucene)를 사용하는 경우 값은 queryLanguage 원하는 대로 될 수 있습니다.

검색 인덱스의 콘텐츠는 여러 언어로 작성할 수 있지만 쿼리 입력은 하나일 가능성이 높습니다. 검색 엔진은 콘텐츠가 구성되는 언어와 언어의 queryLanguage호환성을 검사 않으므로 잘못된 결과가 발생하지 않도록 쿼리 범위를 적절하게 지정해야 합니다.

다음 단계