Dodawanie synonimów w usłudze Azure AI Search
W usłudze wyszukiwania mapa synonimów kojarzy równoważne terminy, rozszerzając zakres zapytania bez konieczności faktycznego podawania terminu przez użytkownika. Na przykład przy założeniu , że pies, psi i szczeniak są mapowane synonimy, zapytanie dotyczące dopasowań psów w dokumencie zawierającym psa. 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ę.
Niektóre kluczowe kwestie dotyczące map synonimów:
- Mapa synonimów to zasób najwyższego poziomu, który można utworzyć raz i używać przez wiele indeksów.
- Mapa synonimów ma zastosowanie do pól ciągów.
- Możesz utworzyć i przypisać mapę synonimów w dowolnym momencie bez zakłóceń w indeksowaniu ani zapytaniach.
- Warstwa usługi ustawia limity liczby map synonimów, które można utworzyć.
- Usługa wyszukiwania może mieć wiele map synonimów, ale w indeksie definicja pola może mieć tylko jedno przypisanie mapy synonimów.
Tworzenie 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.
Aby utworzyć mapę synonimów, wykonaj to programowo. witryna Azure Portal nie obsługuje definicji mapy synonimów.
Utwórz mapę synonimów (interfejs API REST), aby utworzyć mapę synonimów.
POST /synonymmaps?api-version=2024-07-01
{
"name": "geo-synonyms",
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
Washington, Wash., WA => WA\n"
}
Definiowanie reguł
Reguły mapowania są zgodne ze specyfikacją filtru synonimów typu open source oprogramowania Apache Solr opisaną w tym dokumencie: SynonimGraphFilter. 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)
Każda reguła jest 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, wszystkie wielkie lub mieszane terminy. Aby zachować znaki specjalne w ciągu, takim 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 w Stanach Zjednoczonych rozszerza się do STANÓW Zjednoczonych LUB "Stany Zjednoczone" LUB "Stany Zjednoczone Ameryki". 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 dla psa rozszerza zapytanie, aby również uwzględnić szczeniaka i psów.
{
"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 Washington, Wash lub WA jest 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 WA do Waszyngtonu w tym przypadku.
{
"format": "solr",
"synonyms": "
Washington, Wash., WA => WA\n
California, Calif., CA => CA\n"
}
Ucieczka znaków specjalnych
Synonimy są analizowane podczas przetwarzania zapytań tak samo jak w przypadku każdego innego terminu zapytania, co oznacza, że reguły dla 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ą:
- prosta składnia
+ | " ( ) ' \
- pełna składnia
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
Aby zachować znaki odrzucane przez analizator domyślny, zastąp 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 go podwoić. Oto przykład w formacie JSON:
{
"format":"solr",
"synonyms": "WA\\, USA, WA, Washington"
}
Zarządzanie mapami synonimów
Możesz zaktualizować mapę synonimów bez zakłócania obciążeń zapytań i indeksowania. Jednak po dodaniu mapy synonimów do pola, jeśli usuniesz mapę synonimów, każde zapytanie zawierające dane pola zakończy się niepowodzeniem z błędem 404.
Tworzenie, aktualizowanie i usuwanie mapy synonimów jest zawsze operacją całego dokumentu. 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 utworzeniu mapy synonimów przypisz ją do pola w indeksie. Aby przypisać mapy synonimów, wykonaj to programowo. witryna Azure Portal nie obsługuje skojarzeń pól mapy synonimów.
- Pole musi być typu
Edm.String
lubCollection(Edm.String)
- Pole musi mieć
"searchable":true
- Pole może mieć tylko jedną mapę synonimów
Jeśli mapa synonimów istnieje w usłudze wyszukiwania, jest używana w następnym zapytaniu bez konieczności ponownego indeksowania ani ponownego kompilowania.
Użyj interfejsu API REST Create or Update Index (Create or Update Index), aby zmodyfikować definicję pola.
PUT /indexes?api-version=2024-07-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
Przypisanie pola synonimu nie zmienia sposobu pisania zapytań. Po przypisaniu mapy synonimów jedyną różnicą jest to, że jeśli termin zapytania istnieje na mapie synonimów, wyszukiwarka rozwija lub ponownie zapisuje 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łączoną obsługą synonimów, nie widzisz dopasowań 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 podlegają również 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 przy użyciu operatora 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.
Jeśli masz istniejący indeks w środowisku programistycznym (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.
Wyszukiwanie symboli wieloznacznych
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>*
.