Lägga till bedömningsprofiler för att öka sökpoängen

I den här artikeln får du lära dig hur du definierar en bedömningsprofil. En bedömningsprofil är critera för att öka en sökpoäng baserat på parametrar som du anger. Du kanske till exempel vill att matchningar som finns i ett "taggar"-fält ska vara mer relevanta än samma matchning som finns i "beskrivningar". Villkor kan vara ett viktat fält (till exempel exemplet "taggar" eller en funktion.

Bedömningsprofiler definieras i ett sökindex och anropas på fält som inte är vektorfält i frågebegäranden. Du kan skapa flera profiler och sedan ändra frågelogik för att välja vilken som ska användas.

Kommentar

Känner du inte till relevansbegrepp? Följande videosegment på YouTube snabbsnabbar till hur bedömningsprofiler fungerar i Azure AI Search. Du kan också besöka Relevans och bedömning i Azure AI Search för mer bakgrund.

Bedömningsprofildefinition

En bedömningsprofil heter objekt som definierats i ett indexschema. En profil kan bestå av viktade fält, funktioner och parametrar.

Följande definition visar en enkel profil med namnet "geo". Det här exemplet ökar resultaten som har söktermen i fältet hotelName. Den använder distance också funktionen för att gynna resultat som ligger inom 10 kilometer från den aktuella platsen. Om någon söker på termen "inn" och "inn" råkar vara en del av hotellnamnet visas dokument som innehåller hotell med "inn" inom en radie på 10 KM från den aktuella platsen högre i sökresultaten.

"scoringProfiles": [
  {  
    "name":"geo",
    "text": {  
      "weights": {  
        "hotelName": 5
      }                              
    },
    "functions": [
      {  
        "type": "distance",
        "boost": 5,
        "fieldName": "location",
        "interpolation": "logarithmic",
        "distance": {
          "referencePointParameter": "currentLocation",
          "boostingDistance": 10
        }                        
      }                                      
    ]                     
  }            
]

Om du vill använda den här bedömningsprofilen formuleras frågan för att ange parametern scoringProfile i begäran. Om du använder REST API anges frågor via GET- och POST-begäranden. I följande exempel har "currentLocation" en avgränsare av ett enda streck (-). Det följs av longitud- och latitudkoordinater, där longitud är ett negativt värde.

GET /indexes/hotels/docs?search+inn&scoringProfile=geo&scoringParameter=currentLocation--122.123,44.77233&api-version=2020-06-30

Observera syntaxskillnaderna när du använder POST. I POST är "scoringParameters" plural och det är en matris.

POST /indexes/hotels/docs&api-version=2020-06-30
{
    "search": "inn",
    "scoringProfile": "geo",
    "scoringParameters": ["currentLocation--122.123,44.77233"]
}

Den här frågan söker efter termen "inn" och skickar den aktuella platsen. Observera att den här frågan innehåller andra parametrar, till exempel scoringParameter. Frågeparametrar, inklusive "scoringParameter", beskrivs i Sökdokument (REST API).

Se det utökade exemplet för att granska ett mer detaljerat exempel på en bedömningsprofil.

Hur poäng beräknas

Poängen beräknas för fulltextsökningsfrågor. Matchningar poängsätts baserat på hur relevant matchen är och de matchningar med högsta poäng som returneras i frågesvaret. Den övergripande poängen för varje dokument är en sammanställning av de enskilda poängen för varje fält, där den enskilda poängen för varje fält beräknas baserat på termfrekvensen och dokumentfrekvensen för de sökte termerna inom det fältet (kallas TF-IDF eller termfrekvens-inverterad dokumentfrekvens).

Du kan använda parametern featuresMode (förhandsversion) för att begära extra bedömningsinformation med sökresultaten (inklusive poäng på fältnivå).

När du ska lägga till bedömningslogik

Du bör skapa en eller flera bedömningsprofiler när standardrankningsbeteendet inte går tillräckligt långt för att uppfylla dina affärsmål. Du kan till exempel bestämma att sökrelevansen ska gynna nyligen tillagda objekt. På samma sätt kan du ha ett fält som innehåller vinstmarginal eller något annat fält som anger intäktspotential. Att öka resultat som är mer meningsfulla för dina användare eller företaget är ofta den avgörande faktorn vid införandet av bedömningsprofiler.

Relevansbaserad ordning på en söksida implementeras också via bedömningsprofiler. Överväg sökresultatsidor som du har använt tidigare som låter dig sortera efter pris, datum, omdöme eller relevans. I Azure AI Search kan bedömningsprofiler användas för att driva alternativet "relevans". Definitionen av relevans är användardefinierad, baserad på affärsmål och vilken typ av sökupplevelse du vill leverera.

Steg för att lägga till en bedömningsprofil

Om du vill implementera anpassat bedömningsbeteende lägger du till en bedömningsprofil i schemat som definierar indexet. Du kan ha upp till 100 bedömningsprofiler i ett index (se Tjänstbegränsningar), men du kan bara ange en profil i taget i en viss fråga.

  1. Börja med en indexdefinition. Du kan lägga till och uppdatera bedömningsprofiler i ett befintligt index utan att behöva återskapa det. Använd en begäran om uppdateringsindex för att publicera revisionen.

  2. Klistra in mallen i den här artikeln.

  3. Ange ett namn. Bedömningsprofiler är valfria, men om du lägger till en krävs namnet. Se till att följa namngivningskonventionerna för Azure AI Search för fält (börjar med en bokstav, undviker specialtecken och reserverade ord).

  4. Ange villkor för att öka. En enskild profil kan innehålla viktade fält, funktioner eller båda.

Du bör arbeta iterativt med hjälp av en datauppsättning som hjälper dig att bevisa eller motbevisa effekten av en viss profil.

Bedömningsprofiler kan definieras i Azure-portalen enligt följande skärmbild eller programmatiskt via REST-API:er eller i Azure SDK:er, till exempel klassen ScoringProfile i Azure SDK för .NET.

Add scoring profiles page

Använda viktade fält

Använd viktade fält när fältkontexten är viktig och frågor är fulltextsökning. Om en fråga till exempel innehåller termen "flygplats" kanske du vill att "flygplats" i fältet Beskrivning ska ha större vikt än i HotelName.

Viktade fält består av ett sökbart fält och ett positivt tal som används som multiplikator. Om den ursprungliga fältpoängen för HotelName är 3 blir den ökade poängen för fältet 6, vilket bidrar till en högre totalpoäng för själva det överordnade dokumentet.

"scoringProfiles": [  
    {  
      "name": "boostKeywords",  
      "text": {  
        "weights": {  
          "HotelName": 2,  
          "Description": 5 
        }  
      }  
    }
]

Använda funktioner

Använd funktioner när enkla relativa vikter är otillräckliga eller inte gäller, vilket är fallet med avstånd och färskhet, som är beräkningar över numeriska data. Du kan ange flera funktioner per bedömningsprofil. Mer information om de EDM-datatyper som används i Azure AI Search finns i Datatyper som stöds.

Function beskrivning
"friskhet" Ökar med värden i ett datetime-fält (Edm.DateTimeOffset). Den här funktionen har attributet "boostDuration" så att du kan ange ett värde som representerar ett tidsintervall för vilken ökning sker.
"magnitude" Ökar baserat på hur högt eller lågt ett numeriskt värde är. Scenarier som anropar för den här funktionen är att öka med vinstmarginal, högsta pris, lägsta pris eller antal nedladdningar. Den här funktionen kan bara användas med Edm.Double och Edm.Int fält. För funktionen magnitude kan du vända intervallet, högt till lågt, om du vill ha inverteringsmönstret (till exempel för att öka billigare objekt mer än dyrare objekt). Med tanke på ett prisintervall från $ 100 till $ 1, skulle du ställa in "boostingRangeStart" på 100 och "boostRangeEnd" på 1 för att öka de billigare objekten.
"avstånd" Ökar med närhet eller geografisk plats. Den här funktionen kan bara användas med Edm.GeographyPoint fält.
"tag" Ökar med taggar som är gemensamma för både sökdokument och frågesträngar. Taggar tillhandahålls i en "tagsParameter". Den här funktionen kan endast användas med sökfält av typen Edm.String och Collection(Edm.String).

Regler för att använda funktioner

  • Funktioner kan endast tillämpas på fält som tillskrivs som filterbara.
  • Funktionstypen ("freshness", "magnitude", "distance", "tag") måste vara gemen.
  • Funktioner kan inte innehålla null- eller tomma värden.

Mall

Det här avsnittet visar syntaxen och mallen för bedömningsprofiler. Se Egenskapsreferens i nästa avsnitt för beskrivningar av attributen för bedömningsprofil.

"scoringProfiles": [  
  {   
    "name": "name of scoring profile",   
    "text": (optional, only applies to searchable fields) {   
      "weights": {   
        "searchable_field_name": relative_weight_value (positive #'s),   
        ...   
      }   
    },   
    "functions": (optional) [  
      {   
        "type": "magnitude | freshness | distance | tag",   
        "boost": # (positive number used as multiplier for raw score != 1),   
        "fieldName": "(...)",   
        "interpolation": "constant | linear (default) | quadratic | logarithmic",   

        "magnitude": {
          "boostingRangeStart": #,   
          "boostingRangeEnd": #,   
          "constantBoostBeyondRange": true | false (default)
        }  

        // ( - or -)  

        "freshness": {
          "boostingDuration": "..." (value representing timespan over which boosting occurs)   
        }  

        // ( - or -)  

        "distance": {
          "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)   
          "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)   
        }   

        // ( - or -)  

        "tag": {
          "tagsParameter":  "..."(parameter to be passed in queries to specify a list of tags to compare against target field)   
        }
      }
    ],   
    "functionAggregation": (optional, applies only when functions are specified) "sum (default) | average | minimum | maximum | firstMatching"   
  }   
],   
"defaultScoringProfile": (optional) "...", 

Egenskapsreferens

Attribut Beskrivning
name Obligatoriska. Det här är namnet på bedömningsprofilen. Den följer samma namngivningskonventioner för ett fält. Den måste börja med en bokstav, får inte innehålla punkter, kolon eller @-symboler och kan inte börja med frasen azureSearch (skiftlägeskänslig).
text Innehåller egenskapen weights.
Vikter Valfritt. Namn/värde-par som anger ett sökbart fält och ett positivt heltal eller flyttalsnummer för att öka ett fälts poäng. Det positiva heltalet eller talet blir en multiplikator för den ursprungliga fältpoängen som genereras av rangordningsalgoritmen. Om ett fältresultat till exempel är 2 och viktvärdet är 3, blir den ökade poängen för fältet 6. Enskilda fältpoäng aggregeras sedan för att skapa en dokumentfältpoäng, som sedan används för att rangordna dokumentet i resultatuppsättningen.
functions Valfritt. En bedömningsfunktion kan endast tillämpas på fält som kan filtreras.
funktionstyp > Krävs för bedömningsfunktioner. Anger vilken typ av funktion som ska användas. Giltiga värden inkluderar storlek, färskhet, avstånd och tagg. Du kan inkludera mer än en funktion i varje bedömningsprofil. Funktionsnamnet måste vara gemener.
funktioner > ökar Krävs för bedömningsfunktioner. Ett positivt tal som används som multiplikator för råpoäng. Det kan inte vara lika med 1.
functions > fieldname Krävs för bedömningsfunktioner. En bedömningsfunktion kan endast tillämpas på fält som ingår i indexets fältsamling och som kan filtreras. Dessutom introducerar varje funktionstyp ytterligare begränsningar (färskhet används med datetime-fält, storlek med heltal eller dubbla fält och avstånd med platsfält). Du kan bara ange ett enda fält per funktionsdefinition. Om du till exempel vill använda magnituden två gånger i samma profil måste du inkludera två definitionsstorlekar, en för varje fält.
funktionsinterpolation > Krävs för bedömningsfunktioner. Definierar lutningen för vilken poängökningen ökar från början av intervallet till slutet av intervallet. Giltiga värden är Linjär (standard), Konstant, Kvadratisk och Logaritmisk. Mer information finns i Ange interpoleringar .
funktionsstorlek > Funktionen för storleksbedömning används för att ändra rangordningar baserat på värdeintervallet för ett numeriskt fält. Några av de vanligaste användningsexemplen för detta är:

"Star ratings:" Alter the scoring based on the value within the "Star Rating". När två objekt är relevanta visas objektet med högre klassificering först.
"Marginal:" När två dokument är relevanta kan en återförsäljare vilja öka dokument som har högre marginaler först.
"Antal klick:" För program som spårar klick genom åtgärder till produkter eller sidor kan du använda storlek för att öka objekt som tenderar att få ut mesta möjliga trafik.
"Antal nedladdningar:" För program som spårar nedladdningar kan du med funktionen magnituden öka objekt som har flest nedladdningar.
functions > magnitude > boostingRangeStart Anger startvärdet för intervallet som storleken poängsätts för. Värdet måste vara ett heltal eller flyttalsnummer. För stjärnbetyg på 1 till 4 skulle detta vara 1. För marginaler över 50 % skulle detta vara 50.
functions > magnitude > boostingRangeEnd Anger slutvärdet för det intervall som magnituden poängsätts för. Värdet måste vara ett heltal eller flyttalsnummer. För stjärnbetyg på 1 till 4 skulle detta vara 4.
functions > magnitude > constantBoostBeyondRange Giltiga värden är true eller false (standard). När värdet är true fortsätter den fullständiga boosten att gälla för dokument som har ett värde för målfältet som är högre än den övre delen av intervallet. Om det är falskt tillämpas inte boosten för den här funktionen på dokument som har ett värde för målfältet som ligger utanför intervallet.
funktioner > färskhet Funktionen för färskhetsbedömning används för att ändra rangordningspoäng för objekt baserat på värden i fälten DateTimeOffset. Ett objekt med ett senare datum kan till exempel rangordnas högre än äldre objekt.

Det är också möjligt att rangordna objekt som kalenderhändelser med framtida datum så att objekt närmare nutiden kan rangordnas högre än objekt längre fram i framtiden.

I den aktuella tjänstversionen korrigeras ena änden av intervallet till den aktuella tiden. Den andra änden är en tid i det förflutna baserat på boostDuration. För att öka ett antal gånger i framtiden använder du en negativ boostDuration.

Den hastighet med vilken ökningsändringarna från ett högsta och minsta intervall bestäms av interpolationen som tillämpas på bedömningsprofilen (se bilden nedan). Om du vill vända den ökningsfaktor som tillämpas väljer du en boostfaktor på mindre än 1.
funktioner > färskhet > ökaDuration Anger en förfalloperiod varefter en ökning stoppas för ett visst dokument. Se Ange boostDuration i följande avsnitt för syntax och exempel.
funktionsavstånd > Funktionen för avståndsbedömning används för att påverka poängen för dokument baserat på hur nära eller långt de är i förhållande till en referens geografisk plats. Referensplatsen anges som en del av frågan i en parameter (med frågeparametern scoringParameter) som argument lon,lat .
functions > distance > referencePointParameter En parameter som ska skickas i frågor som ska användas som referensplats (med frågeparametern scoringParameter).
funktioner > avstånd > ökaDistance Ett tal som anger avståndet i kilometer från referensplatsen där ökningsintervallet slutar.
funktionstagg > Taggbedömningsfunktionen används för att påverka poängen för dokument baserat på taggar i dokument och sökfrågor. Dokument som har taggar som är gemensamma med sökfrågan kommer att ökas. Taggarna för sökfrågan anges som en bedömningsparameter i varje sökbegäran (med frågeparametern scoringParameter).
functions > tag > tagsParameter En parameter som ska skickas i frågor för att ange taggar för en viss begäran (med frågeparameterparametern scoring). Parametern består av en kommaavgränsad lista över hela termer. Om en viss tagg i listan i sig är en kommaavgränsad lista kan du använda en textnormaliserare på fältet för att ta bort kommatecken vid frågetid (mappa kommatecknet till ett blanksteg). Den här metoden "platta ut" listan så att alla termer är en enda, lång sträng med kommaavgränsade termer.
functionAggregation Valfritt. Gäller endast när funktioner har angetts. Giltiga värden är: summa (standard), medelvärde, minimum, maximum och firstMatching. En sökpoäng är ett enskilt värde som beräknas från flera variabler, inklusive flera funktioner. Det här attributet anger hur ökningarna av alla funktioner kombineras till en enda aggregeringsökning som sedan tillämpas på basdokumentpoängen. Baspoängen baseras på tf-idf-värdet som beräknas från dokumentet och sökfrågan.
defaultScoringProfile När du kör en sökbegäran, om ingen bedömningsprofil har angetts, används standardbedömningen (endast tf-idf ).

Du kan åsidosätta den inbyggda standardinställningen och ersätta en anpassad profil som den som ska användas när ingen specifik profil anges i sökbegäran.

Ange interpoleringar

Med interpoleringar kan du ange formen på lutningen som används för bedömning. Eftersom poängsättningen är hög till låg minskar lutningen alltid, men interpolationen avgör kurvan för den nedåtgående lutningen. Följande interpoleringar kan användas:

Interpolation beskrivning
linear För objekt som ligger inom max- och minintervallet görs den ökning som tillämpas på objektet i en ständigt minskande mängd. Linjär är standardinterpolationen för en bedömningsprofil.
constant För objekt som ligger inom start- och slutintervallet tillämpas en konstant ökning på rankningsresultatet.
quadratic I jämförelse med en linjär interpolation som har en ständigt minskande ökning minskar quadratic initialt i mindre takt och sedan när den närmar sig slutintervallet minskar den med ett mycket högre intervall. Det här interpoleringsalternativet tillåts inte i taggbedömningsfunktioner.
logarithmic I jämförelse med en linjär interpolation som har en ständigt minskande ökning, kommer Logaritmic initialt att minska i högre takt och sedan när den närmar sig slutintervallet minskar den med ett mycket mindre intervall. Det här interpoleringsalternativet tillåts inte i taggbedömningsfunktioner.

Constant, linear, quadratic, log10 lines on graph

Ange boostDuration

boostingDuration är ett attribut för freshness funktionen. Du använder den för att ange en förfalloperiod varefter en ökning stoppas för ett visst dokument. Om du till exempel vill öka en produktlinje eller ett varumärke för en 10-dagars kampanjperiod anger du 10-dagarsperioden som "P10D" för dessa dokument.

boostingDuration måste formateras som ett XSD-värde för "dayTimeDuration" (en begränsad delmängd av ett ISO 8601-varaktighetsvärde). Mönstret för detta är: "P[nD][T[nH][nM][nS]]".

Följande tabell innehåller flera exempel.

Varaktighet boostDuration
1 dag "P1D"
2 dagar och 12 timmar "P2DT12H"
15 minuter "PT15M"
30 dagar, 5 timmar, 10 minuter och 6,334 sekunder "P30DT5H10M6.334S"

Fler exempel finns i XML-schema: Datatyper (W3.org webbplats).

Utökat exempel

I följande exempel visas schemat för ett index med två bedömningsprofiler (boostGenre, newAndHighlyRated). Alla frågor mot det här indexet som innehåller någon av profilerna som en frågeparameter använder profilen för att poängsätta resultatuppsättningen.

Profilen boostGenre använder viktade textfält, vilket ökar matchningarna som finns i fälten albumTitle, genre och artistName. Fälten ökas 1,5, 5 respektive 2. Varför ökar genren så mycket högre än de andra? Om sökning utförs över data som är något homogena (vilket är fallet med "genre" i musikarkivindexet), kan du behöva en större varians i de relativa vikterna. I musicstoreindex visas till exempel "rock" som både en genre och i identiskt formulerade genrebeskrivningar. Om du vill att genren ska väga tyngre än genrebeskrivningen behöver genrefältet en mycket högre relativ vikt.

{  
  "name": "musicstoreindex",  
  "fields": [  
    { "name": "key", "type": "Edm.String", "key": true },  
    { "name": "albumTitle", "type": "Edm.String" },  
    { "name": "albumUrl", "type": "Edm.String", "filterable": false },  
    { "name": "genre", "type": "Edm.String" },  
    { "name": "genreDescription", "type": "Edm.String", "filterable": false },  
    { "name": "artistName", "type": "Edm.String" },  
    { "name": "orderableOnline", "type": "Edm.Boolean" },  
    { "name": "rating", "type": "Edm.Int32" },  
    { "name": "tags", "type": "Collection(Edm.String)" },  
    { "name": "price", "type": "Edm.Double", "filterable": false },  
    { "name": "margin", "type": "Edm.Int32", "retrievable": false },  
    { "name": "inventory", "type": "Edm.Int32" },  
    { "name": "lastUpdated", "type": "Edm.DateTimeOffset" }  
  ],  
  "scoringProfiles": [  
    {  
      "name": "boostGenre",  
      "text": {  
        "weights": {  
          "albumTitle": 1.5,  
          "genre": 5,  
          "artistName": 2  
        }  
      }  
    },  
    {  
      "name": "newAndHighlyRated",  
      "functions": [  
        {  
          "type": "freshness",  
          "fieldName": "lastUpdated",  
          "boost": 10,  
          "interpolation": "quadratic",  
          "freshness": {  
            "boostingDuration": "P365D"  
          }  
        },  
        {
          "type": "magnitude",  
          "fieldName": "rating",  
          "boost": 10,  
          "interpolation": "linear",  
          "magnitude": {  
            "boostingRangeStart": 1,  
            "boostingRangeEnd": 5,  
            "constantBoostBeyondRange": false  
          }  
        }  
      ]  
    }  
  ],  
  "suggesters": [  
    {  
      "name": "sg",  
      "searchMode": "analyzingInfixMatching",  
      "sourceFields": [ "albumTitle", "artistName" ]  
    }  
  ]   
}  

Se även