Dodawanie sprawdzania pisowni do zapytań w usłudze Azure AI Search

Ważne

Korekta pisowni jest dostępna w publicznej wersji zapoznawczej w ramach dodatkowych warunków użytkowania. Jest ona dostępna za pośrednictwem witryny Azure Portal, interfejsów API REST w wersji zapoznawczej i wersji beta bibliotek zestawu Azure SDK.

Kompletność można poprawić, poprawiając pisownię w zapytaniu przed dotarciem do wyszukiwarki. Parametr speller jest obsługiwany dla wszystkich typów zapytań tekstowych (niewektorowych).

Wymagania wstępne

  • Usługa wyszukiwania w warstwie Podstawowa lub nowsza w dowolnym regionie.

  • Istniejący indeks wyszukiwania z zawartością w obsługiwanym języku.

  • Żądanie zapytania zawierające speller=lexicon i queryLanguage ustawione na obsługiwany język. Sprawdzanie pisowni działa na ciągach przekazanych w parametrze search . Nie jest obsługiwany w przypadku filtrów, wyszukiwania rozmytego, wyszukiwania wieloznacznych, wyrażeń regularnych ani zapytań wektorowych.

Użyj klienta wyszukiwania, który obsługuje interfejsy API w wersji zapoznawczej w żądaniu zapytania. Możesz użyć klienta REST lub kodu, który został zmodyfikowany, aby wykonywać wywołania REST do interfejsów API w wersji zapoznawczej. Możesz również użyć wersji beta zestawów SDK platformy Azure.

Biblioteka kliencka Wersje
Interfejs API REST Wersje 2020-06-30-Preview i nowsze. Bieżąca wersja to 2023-10-01-Preview
Zestaw Azure SDK dla platformy .NET wersja 11.5.0-beta.5
Zestaw Azure SDK dla języka Java wersja 11.6.0-beta.5
Zestaw Azure SDK dla języka JavaScript wersja 11.3.0-beta.8
Zestaw Azure SDK dla środowiska Python wersja 11.4.0b3

W poniższym przykładzie użyto wbudowanego indeksu hotels-sample, aby zademonstrować korektę pisowni w prostym zapytaniu tekstowym. Bez korekty pisowni zapytanie zwraca zero wyników. Z korektą zapytanie zwraca jeden wynik dla ośrodka zorientowanego na rodzinę Johnsona.

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
}

Korekta pisowni z pełnym Lucene

Korekta pisowni występuje na poszczególnych terminach zapytania, które przechodzą analizę tekstu, dlatego można użyć parametru sprawdzania pisowni z niektórymi zapytaniami Lucene, ale nie innymi.

  • Niezgodne formularze zapytań, które pomijają analizę tekstu, obejmują: symbol wieloznaczny, regex, rozmyty
  • Zgodne formularze zapytań obejmują: wyszukiwanie pól, bliskość, zwiększanie terminów

W tym przykładzie użyto wyszukiwania w polu Kategoria z pełną składnią Lucene i błędnie napisanym terminem zapytania. Dzięki włączeniu pisowni literówka w poleceniu "Suiite" zostanie poprawiona i zapytanie zakończy się powodzeniem.

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
}

Korekta pisowni z klasyfikacją semantyczną

To zapytanie, z literówkami w każdym okresie, z wyjątkiem jednego, przechodzi poprawki pisowni w celu zwrócenia odpowiednich wyników. Aby dowiedzieć się więcej, zobacz Konfigurowanie klasyfikacji semantycznej.

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
}

Obsługiwane języki

Prawidłowe wartości queryLanguage można znaleźć w poniższej tabeli skopiowanej z listy obsługiwanych języków (dokumentacja interfejsu API REST)..

Język queryLanguage
Angielski [EN] EN, EN-US (ustawienie domyślne)
Hiszpański [ES] ES, ES-ES (ustawienie domyślne)
Francuski [FR] FR, FR-FR (ustawienie domyślne)
Niemiecki [DE] DE, DE-DE (ustawienie domyślne)
Holenderski [NL] NL, NL-BE, NL-NL (ustawienie domyślne)

Uwaga

Wcześniej, podczas gdy klasyfikacja semantyczna była dostępna w publicznej wersji zapoznawczej, queryLanguage parametr był również używany do klasyfikacji semantycznej. Semantyczny ranking jest teraz niezależny od języka.

Zagadnienia dotyczące analizatora języka

Indeksy zawierające zawartość inną niż angielska często używają analizatorów języków w polach innych niż angielski, aby zastosować reguły językowe języka natywnego.

Podczas dodawania sprawdzania pisowni do zawartości, która również przechodzi analizę języka, można uzyskać lepsze wyniki przy użyciu tego samego języka dla każdego kroku indeksowania i przetwarzania zapytań. Jeśli na przykład zawartość pola została zindeksowana przy użyciu analizatora języka "fr.microsoft", zapytania i sprawdzanie pisowni powinny używać francuskiego leksykonu lub biblioteki językowej jakiejś formy.

Aby podsumować sposób użycia bibliotek językowych w usłudze Azure AI Search:

  • Analizatory języka mogą być wywoływane podczas indeksowania i wykonywania zapytań oraz są apache Lucene (na przykład "de.lucene") lub Microsoft ("de.microsoft).

  • Leksykony języka wywoływane podczas sprawdzania pisowni są określane przy użyciu jednego z kodów języka w tabeli obsługiwanych języków .

W żądaniu zapytania wartość przypisana do queryLanguage elementu ma zastosowanie do spellerelementu .

Uwaga

Spójność języka w różnych wartościach właściwości jest problemem tylko wtedy, gdy używasz analizatorów języka. Jeśli używasz analizatorów niezależnie od języka (takich jak słowo kluczowe, proste, standardowe, zatrzymanie, odstępy lub standardasciifolding.lucene), queryLanguage wartość może być dowolna.

Podczas gdy zawartość w indeksie wyszukiwania może składać się w wielu językach, dane wejściowe zapytania są najprawdopodobniej w jednym. Wyszukiwarka nie sprawdza zgodności analizatora queryLanguagejęzyka i języka, w którym składa się zawartość, dlatego należy odpowiednio ograniczyć zakres zapytań, aby uniknąć generowania nieprawidłowych wyników.

Następne kroki