Synonimy w usłudze Azure AI Search

W usłudze wyszukiwania mapy synonimów są zasobem globalnym, który kojarzy równoważne terminy, rozszerzając zakres zapytania bez konieczności podawania terminu przez użytkownika. Na przykład przy założeniu, że "pies", "ps" i "szczeniak" są mapowane synonimy, zapytanie dotyczące "psów" będzie pasować do dokumentu zawierającego "psa".

Tworzenie synonimów

Mapa synonimów to zasób, który można utworzyć raz i używany przez wiele indeksów. Warstwa usługi określa liczbę map synonimów, które można utworzyć, począwszy od trzech map synonimów dla warstw Bezpłatna i Podstawowa, do 20 dla warstw Standardowa.

Możesz utworzyć wiele map synonimów dla różnych języków, takich jak wersje angielskie i francuskie lub leksykony, jeśli zawartość zawiera żargon techniczny, slang lub niejasną terminologię. Chociaż w usłudze wyszukiwania można utworzyć wiele map synonimów, w indeksie definicja pola może mieć tylko jedno przypisanie mapy synonimów.

Mapa synonimów składa się z nazw, formatu i reguł, które działają jako wpisy mapy synonimów. Jedynym obsługiwanym formatem jest solr, a solr format określa konstrukcję reguły.

POST /synonymmaps?api-version=2023-11-01
{
    "name": "geo-synonyms",
    "format": "solr",
    "synonyms": "
        USA, United States, United States of America\n
        Washington, Wash., WA => WA\n"
}

Aby utworzyć mapę synonimów, wykonaj to programowo (portal nie obsługuje definicji mapy synonimów):

Definiowanie reguł

Reguły mapowania są zgodne ze specyfikacją filtru synonimów typu open source oprogramowania Apache Solr opisaną w tym dokumencie: SynonymFilter. Format solr obsługuje dwa rodzaje reguł:

  • równoważność (gdzie terminy są równymi zamiennikami w zapytaniu)

  • jawne mapowania (gdzie terminy są mapowane na jeden jawny termin przed zapytaniem)

Każda reguła musi być rozdzielana znakiem nowego wiersza (\n). Możesz zdefiniować maksymalnie 5000 reguł na mapę synonimów w bezpłatnej usłudze i 20 000 reguł na mapę w innych warstwach. Każda reguła może mieć maksymalnie 20 rozszerzeń (lub elementów w regule). Aby uzyskać więcej informacji, zobacz Limity synonimów.

Analizatory zapytań automatycznie mają małe litery, ale jeśli chcesz zachować znaki specjalne w ciągu, takie jak przecinek lub kreska, dodaj odpowiednie znaki ucieczki podczas tworzenia mapy synonimów.

Reguły równoważności

Reguły dla terminów równoważnych są rozdzielane przecinkami w ramach tej samej reguły. W pierwszym przykładzie zapytanie rozszerza USA wartość USA OR LUB "United States""United States of America". Zwróć uwagę, że jeśli chcesz dopasować frazę, samo zapytanie musi być zapytaniem frazy ujętej w cudzysłów.

W przypadku równoważności zapytanie rozszerzy dog zapytanie, aby również uwzględnić puppy i canine.

{
"format": "solr",
"synonyms": "
    USA, United States, United States of America\n
    dog, puppy, canine\n
    coffee, latte, cup of joe, java\n"
}

Jawne mapowanie

Reguły jawnego mapowania są oznaczone strzałką =>. Po określeniu termin sekwencji zapytania wyszukiwania, który pasuje do lewej strony => , jest zastępowany alternatywami po prawej stronie zapytania.

W jawnym przypadku zapytanie dla WashingtonWash. elementu lub WA zostanie przepisane jako WA, a aparat zapytań szuka tylko dopasowań w terminie WA. Jawne mapowanie ma zastosowanie tylko w określonym kierunku i nie zapisuje ponownie zapytania WAWashington w tym przypadku.

{
"format": "solr",
"synonyms": "
    Washington, Wash., WA => WA\n
    California, Calif., CA => CA\n"
}

Ucieczka znaków specjalnych

W wyszukiwaniu pełnotekstowym synonimy są analizowane podczas przetwarzania zapytań tak samo jak w przypadku każdego innego terminu zapytania, co oznacza, że reguły dotyczące znaków zarezerwowanych i specjalnych mają zastosowanie do terminów w mapie synonimów. Lista znaków wymagających ucieczki różni się między prostą składnią a pełną składnią:

Pamiętaj, że jeśli chcesz zachować znaki, które w przeciwnym razie zostaną odrzucone przez analizator domyślny podczas indeksowania, należy zastąpić analizator, który je zachowuje. Niektóre opcje obejmują analizatory języka naturalnego firmy Microsoft, które zachowują wyrazy łączników lub analizator niestandardowy dla bardziej złożonych wzorców. Aby uzyskać więcej informacji, zobacz Częściowe terminy, wzorce i znaki specjalne.

W poniższym przykładzie pokazano przykład sposobu ucieczki znaku z ukośnikiem odwrotnym:

{
    "format": "solr",
    "synonyms": "WA\, USA, WA, Washington\n"
}

Ponieważ ukośnik odwrotny jest znakiem specjalnym w innych językach, takich jak JSON i C#, prawdopodobnie trzeba będzie go podwoić. Na przykład kod JSON wysłany do interfejsu API REST dla powyższej mapy synonimów będzie wyglądać następująco:

{
    "format":"solr",
    "synonyms": "WA\\, USA, WA, Washington"
}

Przekazywanie map synonimów i zarządzanie nimi

Jak wspomniano wcześniej, można utworzyć lub zaktualizować mapę synonimów bez zakłócania obciążeń zapytań i indeksowania. Mapa synonimów jest obiektem autonomicznym (np. indeksami lub źródłami danych), o ile żadne pole nie jest używane, aktualizacje nie spowodują niepowodzenia indeksowania ani zapytań. Jednak po dodaniu mapy synonimów do definicji pola, jeśli usuniesz mapę synonimów, każde zapytanie zawierające dane pola zakończy się niepowodzeniem z powodu błędu 404.

Tworzenie, aktualizowanie i usuwanie mapy synonimów jest zawsze operacją całego dokumentu, co oznacza, że nie można aktualizować ani usuwać części mapy synonimów przyrostowo. Aktualizowanie nawet pojedynczej reguły wymaga ponownego załadowania.

Przypisywanie synonimów do pól

Po przekazaniu mapy synonimów można włączyć synonimy dla pól typu Edm.String lub Collection(Edm.String), w polach o wartości "searchable":true. Jak wspomniano, definicja pola może używać tylko jednej mapy synonimów.

POST /indexes?api-version=2023-11-01
{
    "name":"hotels-sample-index",
    "fields":[
        {
            "name":"description",
            "type":"Edm.String",
            "searchable":true,
            "synonymMaps":[
            "en-synonyms"
            ]
        },
        {
            "name":"description_fr",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"fr.microsoft",
            "synonymMaps":[
            "fr-synonyms"
            ]
        }
    ]
}

Zapytanie dotyczące równoważnych lub zamapowanych pól

Dodanie synonimów nie nakłada nowych wymagań dotyczących konstruowania zapytań. Zapytania dotyczące terminów i fraz można wystawiać tak samo jak przed dodaniem synonimów. Jedyną różnicą jest to, że jeśli termin zapytania istnieje na mapie synonimów, aparat zapytań rozwiń lub ponownie napisze termin lub frazę w zależności od reguły.

Jak synonimy są używane podczas wykonywania zapytania

Synonimy są techniką rozszerzania zapytań, która uzupełnia zawartość indeksu równoważnymi terminami, ale tylko w przypadku pól, które mają przypisanie synonimu. Jeśli zapytanie w zakresie pola wyklucza pole z włączonym synonimem, nie będzie widoczne dopasowania z mapy synonimów.

W przypadku pól z obsługą synonimów synonimy podlegają tej samej analizie tekstu co skojarzone pole. Jeśli na przykład pole jest analizowane przy użyciu standardowego analizatora Lucene, terminy synonimów będą również podlegać standardowemu analizatorowi Lucene w czasie zapytania. Jeśli chcesz zachować interpunkcję, taką jak kropki lub kreski, w terminie synonimu zastosuj analizator zachowujący zawartość w polu.

Funkcja synonimów wewnętrznie ponownie zapisuje oryginalne zapytanie z synonimami z operatorem OR. Z tego powodu profile wyróżniania trafień i oceniania traktują oryginalny termin i synonimy jako równoważne.

Synonimy dotyczą tylko zapytań tekstowych w dowolnej formie i nie są obsługiwane w przypadku filtrów, aspektów, autouzupełniania ani sugestii. Autouzupełnianie i sugestie są oparte tylko na oryginalnym terminie; Dopasowania synonimów nie są wyświetlane w odpowiedzi.

Rozszerzenia synonimów nie mają zastosowania do terminów wyszukiwania symboli wieloznacznych; terminy prefiksu, rozmyte i wyrażenia regularne nie są rozszerzane.

Jeśli musisz wykonać pojedyncze zapytanie, które stosuje rozszerzenie synonimu i symbol wieloznaczne, wyrażenia regularne lub wyszukiwania rozmyte, możesz połączyć zapytania przy użyciu składni OR. Na przykład aby połączyć synonimy z symbolami wieloznacznymi dla prostej składni zapytania, termin to <query> | <query>*.

Jeśli masz istniejący indeks w środowisku deweloperskim (nieprodukcyjnym), poeksperymentuj z małym słownikiem, aby zobaczyć, jak dodanie synonimów zmienia środowisko wyszukiwania, w tym wpływ na profile oceniania, wyróżnianie trafień i sugestie.

Następne kroki