Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A szinonimák úgy bontanak ki egy lekérdezést, hogy megegyeznek a bemeneti kifejezés szemantikailag egyenértékűnek ítélt kifejezésekkel. Előfordulhat például, hogy azt szeretné, hogy az "autó" egyezzen az "autó" vagy a "jármű" kifejezést tartalmazó dokumentumokkal.
Az Azure AI Searchben a szinonimákat szinonimák térképe határozza meg az egyenértékű kifejezéseket társító leképezési szabályokon keresztül. Ez a példa a szinonimák meglévő indexekkel való hozzáadásának és használatának alapvető lépéseit ismerteti.
Ebben a példában megtudhatja, hogyan:
- Szinonimatérkép létrehozása a Szinonimáktérkép osztály használatával.
- Állítsa be a SzinonimamapsName tulajdonságot olyan mezőkre, amelyek szinonimákon keresztül támogatják a lekérdezések bővítését.
A szokásos módon lekérdezhet egy szinonima-kompatibilis mezőt. A szinonimák eléréséhez nincs szükség további lekérdezési szintaxisra.
Létrehozhat több szinonimatérképet, közzéteheti őket bármely index számára elérhető szolgáltatásszintű erőforrásként, majd hivatkozhat arra, hogy melyiket használja a mezőszinten. Lekérdezéskor az Index keresése mellett az Azure AI Search szinonimatérképen is keres, ha a lekérdezésben használt mezőkben van megadva.
Megjegyzés:
A szinonimák programozott módon hozhatók létre, a portálon azonban nem.
Előfeltételek
Az oktatóanyag követelményei a következők:
Ha nem ismeri a .NET-ügyfélkódtárat, olvassa el az Azure AI Search használata a .NET-ben című témakört.
példakód
A példában használt mintaalkalmazás teljes forráskódját megtalálhatja a GitHubon.
Áttekintés
Az utó és előtti lekérdezések a szinonimák értékének bemutatására szolgálnak. Ebben a példában egy mintaalkalmazás lekérdezéseket hajt végre, és eredményeket ad vissza egy két dokumentummal kitöltött minta "hotels" indexen. Először is az alkalmazás keresési lekérdezéseket hajt végre olyan kifejezések és kifejezések használatával, amelyek nem jelennek meg az indexben. Másodszor, a kód engedélyezi a szinonimák funkciót, majd újból kiadja ugyanazokat a lekérdezéseket, ezúttal a szinonimák térképének egyezései alapján adja vissza az eredményeket.
Az alábbi kód a teljes folyamatot mutatja be.
static void Main(string[] args)
{
SearchIndexClient indexClient = CreateSearchIndexClient();
Console.WriteLine("Cleaning up resources...\n");
CleanupResources(indexClient);
Console.WriteLine("Creating index...\n");
CreateHotelsIndex(indexClient);
SearchClient searchClient = indexClient.GetSearchClient("hotels");
Console.WriteLine("Uploading documents...\n");
UploadDocuments(searchClient);
SearchClient searchClientForQueries = CreateSearchClientForQueries();
RunQueriesWithNonExistentTermsInIndex(searchClientForQueries);
Console.WriteLine("Adding synonyms...\n");
UploadSynonyms(indexClient);
Console.WriteLine("Enabling synonyms in the test index...\n");
EnableSynonymsInHotelsIndexSafely(indexClient);
Thread.Sleep(10000); // Wait for the changes to propagate
RunQueriesWithNonExistentTermsInIndex(searchClientForQueries);
Console.WriteLine("Complete. Press any key to end application...\n");
Console.ReadKey();
}
"Előtt" lekérdezések
A RunQueriesWithNonExistentTermsInIndex-ban indítson kereséseket a "ötcsillagos", "internet" és "economy AND hotel" kifejezésekre.
A kifejezéslekérdezéseket(például az "öt csillagot") idézőjelek közé kell foglalni, és az ügyféltől függően szükség lehet a feloldó karakterekre is.
Console.WriteLine("Search the entire index for the phrase \"five star\":\n");
results = searchClient.Search<Hotel>("\"five star\"", searchOptions);
WriteDocuments(results);
Console.WriteLine("Search the entire index for the term 'internet':\n");
results = searchClient.Search<Hotel>("internet", searchOptions);
WriteDocuments(results);
Console.WriteLine("Search the entire index for the terms 'economy' AND 'hotel':\n");
results = searchClient.Search<Hotel>("economy AND hotel", searchOptions);
WriteDocuments(results);
A két indexelt dokumentum egyike sem tartalmazza a kifejezéseket, ezért az elsőből RunQueriesWithNonExistentTermsInIndexa következő kimenetet kapjuk: egyetlen dokumentum sem egyezik.
Szinonimák engedélyezése
A "korábbi" lekérdezések futtatása után a mintakód szinonimákat tesz lehetővé. A szinonimák engedélyezése kétlépéses folyamat. Először definiáljon és töltsön fel szinonimaszabályokat. Másodszor konfigurálja a mezőket a használatukhoz. A folyamat a következőben van körvonalazva UploadSynonyms : és EnableSynonymsInHotelsIndex.
Szinonimatérkép hozzáadása a keresési szolgáltatáshoz. Ebben
UploadSynonymsa részben négy szabályt határozunk meg a szinonimatérkép "desc-szinonimatérképében", és feltöltjük a szolgáltatásba.private static void UploadSynonyms(SearchIndexClient indexClient) { var synonymMap = new SynonymMap("desc-synonymmap", "hotel, motel\ninternet,wifi\nfive star=>luxury\neconomy,inexpensive=>budget"); indexClient.CreateOrUpdateSynonymMap(synonymMap); }Konfigurálja a kereshető mezőket a szinonimatérkép használatára az indexdefinícióban. Ebben
AddSynonymMapsToFieldsa mezőben engedélyezzük a szinonimákat két mezőbencategory, éstagsúgy, hogy aSynonymMapNamestulajdonságot az újonnan feltöltött szinonimatérkép nevére állítjuk.private static SearchIndex AddSynonymMapsToFields(SearchIndex index) { index.Fields.First(f => f.Name == "category").SynonymMapNames.Add("desc-synonymmap"); index.Fields.First(f => f.Name == "tags").SynonymMapNames.Add("desc-synonymmap"); return index; }Szinonimatérkép hozzáadásakor nem szükséges újraépíteni az indexet. Szinonimatérképet adhat hozzá a szolgáltatáshoz, majd bármikor módosíthatja a meglévő meződefiníciókat bármelyik indexben az új szinonimatérkép használatához. Ugyanez vonatkozik egy mező szinonimáinak letiltására is. A tulajdonságot üres listára állíthatja
SynonymMapNames.index.Fields.First(f => f.Name == "category").SynonymMapNames.Add("desc-synonymmap");
Utáni lekérdezések
A szinonimák leképezésének feltöltése és az index frissítése után a szinonimák térképének használatára a második RunQueriesWithNonExistentTermsInIndex hívás választ ad:
Search the entire index for the phrase "five star":
Name: Fancy Stay Category: Luxury Tags: [pool, view, wifi, concierge]
Search the entire index for the term 'internet':
Name: Fancy Stay Category: Luxury Tags: [pool, view, wifi, concierge]
Search the entire index for the terms 'economy' AND 'hotel':
Name: Roach Motel Category: Budget Tags: [motel, budget]
Az első lekérdezés megkeresi a dokumentumot a szabályból five star=>luxury. A második lekérdezés kiterjeszti a keresést a internet,wifi használatával, a harmadik pedig a hotel, motel és economy,inexpensive=>budget segítségével azon dokumentumok keresésével, amelyek megfeleltek a lekérdezésnek.
A szinonimák hozzáadása teljesen megváltoztatja a keresési élményt. Ebben a példában az eredeti lekérdezések nem adtak vissza értelmes eredményeket annak ellenére, hogy az indexben lévő dokumentumok relevánsak voltak. A szinonimák engedélyezésével kiterjeszthetjük az indexet úgy, hogy az általános használatban lévő kifejezéseket is tartalmazza, és az indexben nem változnak az alapul szolgáló adatok.
Erőforrások tisztítása
Egy példa után a leggyorsabb tisztítási módszer az Azure AI Search szolgáltatást tartalmazó erőforráscsoport törlése. Most már törölheti az erőforráscsoportot, hogy véglegesen töröljön benne mindent. A portálon az erőforráscsoport neve az Azure AI Search szolgáltatás Áttekintés lapján található.