Skapa ett index i Azure AI Search

I Azure AI Search riktar sig frågebegäranden mot den sökbara texten i ett sökindex.

I den här artikeln får du lära dig stegen för att definiera och publicera ett sökindex. När du skapar ett index upprättas de fysiska datastrukturerna i söktjänsten. När indexdefinitionen finns följer inläsningen av indexet som en separat uppgift.

Förutsättningar

  • Skrivbehörighet. Behörighet kan beviljas via en administratörs-API-nyckel i begäran. Om du använder rollbaserad åtkomstkontroll kan du också skicka en begäran som medlem i rollen Sökdeltagare.

  • En förståelse för de data som du vill indexeras. Att skapa ett index är en schemadefinitionsövning, så du bör ha en tydlig uppfattning om vilka källfält du vill göra sökbara, hämtningsbara, filterbara, fasettbara och sorterbara (se schemachecklistan för vägledning).

    Du måste också ha ett unikt fält i källdata som kan användas som dokumentnyckel (eller ID) i indexet.

  • En stabil indexplats. Det går inte att flytta ett befintligt index till en annan söktjänst. Gå tillbaka till programkraven och se till att din befintliga söktjänst, dess kapacitet och plats är tillräckliga för dina behov.

  • Slutligen har alla tjänstnivåer indexgränser för antalet objekt som du kan skapa. Om du till exempel experimenterar på den kostnadsfria nivån kan du bara ha tre index vid en viss tidpunkt. Inom själva indexet finns det gränser för antalet komplexa fält och samlingar.

Dokumentnycklar

Ett sökindex har ett obligatoriskt fält: en dokumentnyckel. En dokumentnyckel är den unika identifieraren för ett sökdokument. I Azure AI Search måste den vara en sträng och den måste komma från unika värden i datakällan som tillhandahåller det innehåll som ska indexeras. En söktjänst genererar inte nyckelvärden, men i vissa scenarier (till exempel Azure-tabellindexeraren) syntetiserar den befintliga värden för att skapa en unik nyckel för de dokument som indexeras.

Under inkrementell indexering, där nytt och uppdaterat innehåll indexeras, läggs inkommande dokument med nya nycklar till, medan inkommande dokument med befintliga nycklar antingen sammanfogas eller skrivs över, beroende på om indexfälten är null eller ifyllda.

Schemachecklista

Använd den här checklistan för att hjälpa designbesluten för ditt sökindex.

  1. Granska namngivningskonventionerna så att index- och fältnamn överensstämmer med namngivningsreglerna.

  2. Granska datatyper som stöds. Datatypen påverkar hur fältet används. Numeriskt innehåll kan till exempel filtreras men kan inte sökas i fulltext. Den vanligaste datatypen är Edm.String sökbar text, som tokeniseras och efterfrågas med hjälp av sökmotorn för fulltext.

  3. Identifiera en dokumentnyckel. En dokumentnyckel är ett indexkrav. Det är ett enda strängfält och fylls i från ett källdatafält som innehåller unika värden. Om du till exempel indexerar från Blob Storage används ofta metadatalagringssökvägen som dokumentnyckel eftersom den unikt identifierar varje blob i containern.

  4. Identifiera fälten i datakällan som bidrar med sökbart innehåll i indexet. Sökbart innehåll innehåller korta eller långa strängar som efterfrågas med hjälp av sökmotorn för fulltext. Om innehållet är utförligt (små fraser eller större segment) experimenterar du med olika analysverktyg för att se hur texten tokeniseras.

    Fältattributtilldelningar avgör både sökbeteenden och den fysiska representationen av ditt index i söktjänsten. Att avgöra hur fält ska anges är en iterativ process för många kunder. För att påskynda iterationer börjar du med exempeldata så att du enkelt kan släppa och återskapa dem.

  5. Identifiera vilka källfält som kan användas som filter. Numeriskt innehåll och korta textfält, särskilt de med upprepade värden, är bra alternativ. Kom ihåg att när du arbetar med filter:

    • Filterbara fält kan också användas i fasetterad navigering.

    • Filterbara fält returneras i godtycklig ordning, så överväg att även göra dem sorterbara.

  6. Ta reda på om du vill använda standardanalysatorn ("analyzer": null) eller en annan analysator. Analysverktyg används för att tokenisera textfält under indexering och frågekörning.

    För flerspråkiga strängar bör du överväga en språkanalysator.

    För bindestreckade strängar eller specialtecken bör du överväga specialiserade analysverktyg. Ett exempel är nyckelord som behandlar hela innehållet i ett fält som en enda token. Det här beteendet är användbart för data som postnummer, ID:t och vissa produktnamn. Mer information finns i Partiell termsökning och mönster med specialtecken.

Kommentar

Fulltextsökning utförs över termer som tokeniseras under indexering. Om dina frågor inte returnerar de resultat du förväntar dig testar du för tokenisering för att kontrollera att strängen faktiskt finns. Du kan prova olika analysverktyg på strängar för att se hur token skapas för olika analysverktyg.

Skapa ett index

När du är redo att skapa indexet använder du en sökklient som kan skicka begäran. Du kan använda Azure-portalen eller REST-API:er för tidig utveckling och koncepttestning.

Under utvecklingen planerar du frekventa ombyggnader. Eftersom fysiska strukturer skapas i tjänsten är det nödvändigt att släppa och återskapa index för många ändringar. Du kan överväga att arbeta med en delmängd av dina data för att få återskapanden att gå snabbare.

Indexdesign via portalen tillämpar krav och schemaregler för specifika datatyper, till exempel att inte tillåta funktioner för fulltextsökning i numeriska fält.

  1. Logga in på Azure-portalen.

  2. På sidan Översikt för söktjänsten väljer du något av alternativen för att skapa ett sökindex:

    Guiden är ett arbetsflöde från slutpunkt till slutpunkt som skapar en indexerare, en datakälla och ett färdigt index. Den läser också in data. Om det här är mer än vad du vill använda använder du Lägg till index i stället.

Följande skärmbild visar var Lägg till index och Importera data visas i kommandofältet. När ett index har skapats kan du hitta det igen på fliken Index .

Lägg till indexkommando

Dricks

När du har skapat ett index i portalen kan du kopiera JSON-representationen och lägga till den i programkoden.

Ange corsOptions för frågor mellan ursprung

Indexscheman innehåller ett avsnitt för att ange corsOptions. Som standard kan JavaScript på klientsidan inte anropa några API:er eftersom webbläsare förhindrar alla begäranden mellan ursprung. Om du vill tillåta korsande frågor till ditt index aktiverar du CORS (Resursdelning mellan ursprung) genom att ange attributet corsOptions . Av säkerhetsskäl stöder endast fråge-API:er CORS.

"corsOptions": {
  "allowedOrigins": [
    "*"
  ],
  "maxAgeInSeconds": 300

Följande egenskaper kan anges för CORS:

  • allowedOrigins (krävs): Det här är en lista över ursprung som har åtkomst till ditt index. JavaScript-kod som hanteras från dessa ursprung kan köra frågor mot ditt index (förutsatt att anroparen tillhandahåller en giltig nyckel eller har behörigheter). Varje ursprung är vanligtvis av formuläret protocol://<fully-qualified-domain-name>:<port> men <port> utelämnas ofta. Mer information finns i Resursdelning mellan ursprung (Wikipedia).

    Om du vill tillåta åtkomst till alla ursprung ska du inkludera * som ett enskilt objekt i matrisen allowedOrigins . Detta är inte en rekommenderad metod för produktionssökningstjänster , men det är ofta användbart för utveckling och felsökning.

  • maxAgeInSeconds (valfritt): Webbläsare använder det här värdet för att fastställa varaktigheten (i sekunder) för att cachelagras CORS-förhandssvar. Detta måste vara ett icke-negativt heltal. En längre cacheperiod ger bättre prestanda, men det förlänger den tid som en CORS-princip måste börja gälla. Om det här värdet inte anges används en standardvaraktighet på fem minuter.

Tillåtna uppdateringar för befintliga index

Skapa index skapar fysiska datastrukturer (filer och inverterade index) i söktjänsten. När indexet har skapats är din möjlighet att göra ändringar med hjälp av Uppdateringsindex beroende av om dina ändringar ogiltigförklarar dessa fysiska strukturer. De flesta fältattribut kan inte ändras när fältet har skapats i ditt index.

Du kan också skapa ett indexalias som fungerar som en stabil referens i programkoden. I stället för att uppdatera koden kan du uppdatera ett indexalias så att det pekar på nyare indexversioner.

För att minimera omsättningen i designprocessen beskriver följande tabell vilka element som är fasta och flexibla i schemat. Om du ändrar ett fast element måste du återskapa ett index, medan flexibla element kan ändras när som helst utan att den fysiska implementeringen påverkas.

Element Kan uppdateras?
Name Nej
Nyckel Nej
Fältnamn och typer Nej
Fältattribut (sökbara, filterbara, fasettbara, sorterbara) Nej
Fältattribut (kan hämtas) Ja
Analyzer Du kan lägga till och ändra anpassade analysverktyg i indexet. När det gäller analystilldelningar i strängfält kan du bara ändra searchAnalyzer. Alla andra tilldelningar och ändringar kräver en ombyggnad.
Poängprofiler Ja
Förslag på alternativ Nej
resursdelning mellan ursprung (CORS) Ja
Kryptering Ja

Nästa steg

Använd följande länkar för att bekanta dig med att läsa in ett index med data eller utöka ett index med en synonymkarta.