Přidání synonym ve službě Azure AI Search
Mapa synonym ve vyhledávací službě přidruží ekvivalentní termíny a rozšiřuje rozsah dotazu, aniž by uživatel musel termín skutečně zadat. Například za předpokladu, že pes, psí, psí a štěňátko jsou mapovaná synonyma, dotaz na psí shody v dokumentu obsahujícím psa. Můžete vytvořit více map synonym pro různé jazyky, jako je angličtina a francouzština nebo lexikony, pokud váš obsah obsahuje technickou žargon, slang nebo nejasnou terminologii.
Některé klíčové body map synonym:
- Mapa synonym je prostředek nejvyšší úrovně, který lze vytvořit jednou a používat mnoho indexů.
- Mapa synonym se vztahuje na řetězcová pole.
- Mapu synonym můžete kdykoli vytvořit a přiřadit bez přerušení indexování nebo dotazů.
- Úroveň služby nastavuje omezení počtu map synonym, které můžete vytvořit.
- Vyhledávací služba může mít více map synonym, ale v indexu může definice pole obsahovat pouze jedno přiřazení mapy synonym.
Vytvoření mapy synonym
Mapa synonym se skládá z názvu, formátu a pravidel, která fungují jako položky mapování synonym. Jediný podporovaný formát je solr
a solr
formát určuje konstrukci pravidla.
Pokud chcete vytvořit mapu synonym, udělejte to programově. Azure Portal nepodporuje definice map synonym.
K vytvoření mapy synonym použijte rozhraní REST API (Create Synonym Map).
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"
}
Definování pravidel
Pravidla mapování odpovídají specifikaci opensourcového filtru synonym Apache Solru popsaného v tomto dokumentu: SynonymGraphFilter. Formát solr
podporuje dva druhy pravidel:
ekvivalence (pokud jsou termíny v dotazu stejné)
explicitní mapování (kde se termíny mapují na jeden explicitní termín)
Každé pravidlo je oddělené znakem nového řádku (\n
). V bezplatné službě můžete definovat až 5 000 pravidel na mapu synonym a 20 000 pravidel na mapu v jiných úrovních. Každé pravidlo může mít až 20 rozšíření nebo položek v pravidle. Další informace najdete v tématu Omezení synonym.
Analyzátory dotazů automaticky s malých a velkých a velkých a smíšených termínů. Chcete-li zachovat speciální znaky v řetězci, například čárku nebo pomlčku, přidejte při vytváření mapy synonym příslušné řídicí znaky.
Pravidla ekvivalence
Pravidla pro ekvivalentní termíny jsou v rámci stejného pravidla oddělená čárkami. V prvním příkladu se dotaz v USA rozbalí na USA NEBO "USA" NEBO "USA Ameriky". Všimněte si, že pokud se chcete shodovat s frází, musí být samotný dotaz s uvozovkami.
V případě ekvivalence dotaz psa rozšiřuje, aby zahrnoval také štěňátka a psíka.
{
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
dog, puppy, canine\n
coffee, latte, cup of joe, java\n"
}
Explicitní mapování
Pravidla explicitního mapování jsou označena šipkou =>
. Při zadání se sekvence termínů vyhledávacího dotazu, který odpovídá levé straně =>
, nahradí alternativami na pravé straně v době dotazu.
V explicitním případě se dotaz pro Washington, Wash nebo WA přepíše jako WA a dotazovací modul hledá pouze shody ve výrazu WA. Explicitní mapování se použije pouze ve směru zadaném a v tomto případě dotaz WA nepřepíše do Washingtonu.
{
"format": "solr",
"synonyms": "
Washington, Wash., WA => WA\n
California, Calif., CA => CA\n"
}
Zapouzdření speciálních znaků
Synonyma se analyzují během zpracování dotazů stejně jako jakýkoli jiný termín dotazu, což znamená, že pravidla vyhrazených a speciálních znaků se vztahují na termíny v mapě synonym. Seznam znaků, které vyžadují zapouzdření, se liší mezi jednoduchou syntaxí a úplnou syntaxí:
-
jednoduchá syntaxe
+ | " ( ) ' \
-
úplná syntaxe
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
Chcete-li zachovat znaky, které výchozí analyzátor zahodí, nahraďte analyzátorem, který je zachová. Mezi volby patří analyzátory přirozeného jazyka Microsoftu, které zachová slova s dělením slov, nebo vlastní analyzátor pro složitější vzory. Další informace naleznete v části Částečné termíny, vzory a speciální znaky.
Následující příklad ukazuje příklad řídicího znaku pomocí zpětného lomítka:
{
"format": "solr",
"synonyms": "WA\, USA, WA, Washington\n"
}
Vzhledem k tomu, že zpětné lomítko je v jiných jazycích, jako je JSON a C#, speciální znak, pravděpodobně ho budete muset dvojitě uvozit. Tady je příklad ve formátu JSON:
{
"format":"solr",
"synonyms": "WA\\, USA, WA, Washington"
}
Správa map synonym
Mapu synonym můžete aktualizovat bez přerušení úloh dotazování a indexování. Jakmile ale přidáte mapu synonym do pole, odstraníte mapování synonym, jakýkoli dotaz, který obsahuje daná pole, selže s chybou 404.
Vytvoření, aktualizace a odstranění mapy synonym je vždy operace celého dokumentu. Části mapy synonym nemůžete přírůstkově aktualizovat ani odstranit. Aktualizace i jednoho pravidla vyžaduje opětovné načtení.
Přiřazení synonym k polím
Po vytvoření mapy synonym ji přiřaďte k poli v indexu. Mapování synonym můžete přiřadit programově. Azure Portal nepodporuje přidružení polí mapování synonym.
- Pole musí být typu
Edm.String
neboCollection(Edm.String)
- Pole musí obsahovat
"searchable":true
- Pole může mít pouze jednu mapu synonym.
Pokud mapa synonym ve vyhledávací službě existuje, použije se v dalším dotazu bez nutnosti přeindexování nebo opětovného sestavení.
K úpravě definice pole použijte rozhraní REST API (Create or Update Index).
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"
]
}
]
}
Dotaz na ekvivalentní nebo mapovaná pole
Přiřazení pole synonyma nemění způsob psaní dotazů. Jediným rozdílem po přiřazení mapy synonym je, že pokud v mapě synonym existuje termín dotazu, vyhledávací web buď rozbalí nebo přepíše termín nebo frázi v závislosti na pravidlu.
Jak se používají synonyma při provádění dotazu
Synonyma jsou technika rozšíření dotazu, která doplňuje obsah indexu ekvivalentními termíny, ale pouze pro pole, která mají přiřazení synonyma. Pokud dotaz s oborem pole vyloučí pole s povoleným synonymem, nezobrazí se shody z mapy synonym.
U polí s povoleným synonymem se synonyma řídí stejnou textovou analýzou jako přidružené pole. Pokud je například pole analyzováno pomocí standardního analyzátoru Lucene, termíny synonym se vztahují také na standardní analyzátor Lucene v době dotazu. Pokud chcete zachovat interpunkci, jako jsou tečky nebo pomlčky, použijte v poli analyzátor zachování obsahu.
Funkce synonym interně přepisuje původní dotaz synonymy pomocí operátoru OR. Z tohoto důvodu se pomocí zvýrazňování a bodování profilů zachází s původním termínem a synonymy jako s ekvivalentem.
Synonyma platí jenom pro dotazy na text ve volném formátu a nepodporují se pro filtry, omezující vlastnosti, automatické dokončování nebo návrhy. Automatické dokončování a návrhy jsou založeny pouze na původním termínu; v odpovědi se nezobrazují shody synonym.
Pokud máte existující index ve vývojovém (neprodukčním) prostředí, experimentujte s malým slovníkem a podívejte se, jak přidání synonym mění možnosti hledání, včetně dopadu na bodovací profily, zvýraznění hitů a návrhů.
Hledání pomocí zástupných znaků
Rozšíření synonym se nevztahují na zástupné hledané termíny; výrazy prefix, fuzzy a regex nejsou rozbalené.
Pokud potřebujete provést jeden dotaz, který použije rozšíření synonym a zástupné hledané závislosti, regulární výrazy nebo přibližné vyhledávání, můžete dotazy kombinovat pomocí syntaxe OR. Pokud chcete například zkombinovat synonyma se zástupnými znaky pro jednoduchou syntaxi dotazu, termín by byl <query> | <query>*
.