Přidání profilů vyhodnocování do indexu hledání

U fulltextových vyhledávacích dotazů hledá vyhledávací modul skóre vyhledávání pro každý dokument, který umožňuje řazení výsledků z vysoké na nízkou. Azure Kognitivní hledání používá k výpočtu počátečního skóre výchozí algoritmus hodnocení, ale výpočet můžete přizpůsobit pomocí profilu vyhodnocování.

Profily vyhodnocování jsou vložené do definic indexů a zahrnují vlastnosti pro zvýšení skóre shody, kde další kritéria nalezená v profilu poskytují logiku zvyšování. Můžete například chtít zvýšit shody na základě jejich potenciálních výnosů, zvýšit úroveň nových položek nebo možná zvýšit množství položek, které byly v inventáři příliš dlouho.

Neznáte koncepty důležitosti? Následující segment videa se rychle přepošle na to, jak profily vyhodnocování fungují v Azure Kognitivní hledání, ale video také pokrývá základní koncepty. Můžete si také projít hodnocení podobnosti a bodování pro další pozadí.

Co je profil vyhodnocování?

Profil vyhodnocování je součástí definice indexu a skládá se z váženého pole, funkcí a parametrů. Účelem profilu vyhodnocování je zvýšit nebo rozšířit dokumenty na základě zadaných kritérií.

Následující definice znázorňuje jednoduchý profil s názvem geo. Tato jedna zvyšuje výsledky, které mají hledaný termín v poli hotely. Tato funkce také využívá distance funkci k upřednostnění výsledků, které spadají do deseti kilometrů aktuálního umístění. Pokud někdo vyhledá pojem "Inn" a "Inn" se stane součástí názvu hotelu, dokumenty, které obsahují Hotely s "Inn" v rámci poloměru 10 KM v aktuálním umístění, se ve výsledcích hledání zobrazí výše.

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

Pokud chcete použít tento profil vyhodnocování, váš dotaz se formuluje zadáním parametru scoringProfile v žádosti.

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

Tento dotaz vyhledá pojem "Inn" a předá ho do aktuálního umístění. Všimněte si, že tento dotaz obsahuje další parametry, například scoringParameter. Parametry dotazu jsou popsány v dokumentu hledání (REST API).

V rozšířeném příkladu si můžete prohlédnout podrobnější příklad profilu vyhodnocování.

Jak se počítají skóre

Skóre jsou vypočítány pro fulltextové vyhledávací dotazy pro účely řazení nejrelevantních shod a jejich vrácení v horní části odpovědi. Celkové skóre každého dokumentu je souhrn jednotlivých výsledků pro každé pole, kde se jednotlivé skóre každého pole vypočítávají na základě četnosti a četnosti hledání dokumentů v rámci tohoto pole (označované jako TF-IDF nebo frekvence termínů – inverzní frekvence dokumentů).

Tip

Pomocí parametru featuresMode můžete požádat o další podrobnosti bodování s výsledky hledání (včetně skóre na úrovni pole).

Kdy přidat logiku bodování

Jeden nebo více profilů vyhodnocování byste měli vytvořit v případě, že výchozí chování hodnocení nebude v souladu s vašimi podnikovými záměry dostatečně daleko. Například se můžete rozhodnout, že se má při hledání upřednostňovat nové přidávané položky. Podobně může být pole, které obsahuje ziskové marže, nebo jiné pole, které indikuje potenciální výnosy. Zvyšování výsledků, které jsou smysluplnější pro vaše uživatele nebo firmy, je často rozhodujícím faktorem při přijímání profilů vyhodnocování.

Řazení založené na relevanci na stránce vyhledávání je implementováno také prostřednictvím profilů vyhodnocování. Vezměte v úvahu stránky výsledků hledání, které jste použili v minulosti, které vám umožňují řadit podle ceny, data, hodnocení nebo relevance. V Azure Kognitivní hledání se profily vyhodnocování dají použít k pohonu možnosti relevance. Definice relevance je řízena vámi, s predikátem pro obchodní cíle a typem vyhledávacího prostředí, které chcete doručit.

Rozšířený příklad

Následující příklad ukazuje schéma indexu se dvěma profily vyhodnocování ( boostGenre , newAndHighlyRated ). Každý dotaz na tento index, který obsahuje buď profil jako parametr dotazu, použije profil k vyhodnocení sady výsledků dotazu.

boostGenreProfil používá pole váženého textu a zvyšuje shody nalezené v polích albumTitle, Žánr a umělec. Pole se zvyšují 1,5, 5 a 2 v uvedeném pořadí. Proč se Žánr zvýšilo, takže je mnohem větší než ostatní? Pokud je hledání prováděno nad daty, která jsou poměrně homogenní (stejně jako u "žánru" v musicstoreindex), možná budete potřebovat větší odchylku v relativních závažích. Například v musicstoreindex se "Rock" zobrazí jako žánr i v popiscích žánrů ve stejné větě. Pokud chcete, aby měl Žánr popis žánru, bude mít pole Žánr mnohem vyšší relativní váhu.

{  
  "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" ]  
    }  
  ]   
}  

Postup přidání profilu vyhodnocování

Chcete-li implementovat vlastní chování bodování, přidejte profil vyhodnocování do schématu definujícího index. V rámci indexu můžete mít až 100 profilů vyhodnocování (viz omezení služby), ale v libovolném daném dotazu můžete zadat jenom jeden profil v čase.

  1. Začněte s definicí indexu. Můžete přidat a aktualizovat profily vyhodnocování pro existující index, aniž byste je museli znovu sestavovat. K odeslání revize použijte požadavek na index aktualizace .

  2. Vložit do šablony uvedené v tomto tématu.

  3. Zadejte název. Profily vyhodnocování jsou volitelné, ale pokud ho přidáte, název je povinný. Nezapomeňte dodržovat Kognitivní hledání konvence pojmenování pro pole (začíná písmenem, vyhněte se speciálním znakům a rezervovaným slovům).

  4. Zadejte kritéria zvyšování úrovně. Jeden profil může obsahovat Vážená pole, funkcenebo obojí.

Měli byste pracovat iterativním s využitím datové sady, která vám pomůže dokázat nebo dokázat účinnost daného profilu.

Profily vyhodnocování lze definovat v Azure Portal, jak je znázorněno na následujícím snímku obrazovky, nebo programově prostřednictvím rozhraní REST API nebo v sadách Azure SDK, jako je například třída ScoringProfile v sadě Azure SDK pro .NET.

Stránka Přidat profily vyhodnocování

Použití vážených polí

Použijte vážená pole, když je kontext pole důležitý a dotazy jsou fulltextové vyhledávání (označované také jako bezplatné hledání textu na formuláři). Pokud například dotaz obsahuje pojem "letiště", možná budete chtít, aby pole "letiště" v poli Popis mělo větší váhu než v poli hotely.

Vážená pole se skládají z vyhledávacího pole a kladné číslo, které se používá jako násobitel. Pokud je původní skóre pole Hotely 3, zvyšuje se skóre tohoto pole 6 a přispívá k vyššímu celkovému skóre nadřazeného dokumentu.

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

Používání funkcí

Funkce použijte v případě, že jednoduchá relativní závaží nejsou dostačující nebo se nevztahují, jako v případě vzdálenosti a aktuálnosti, která se počítá přes číselná data. Můžete zadat více funkcí na jeden profil vyhodnocování.

Funkce Description
aktuálnosti Zvyšuje hodnoty podle hodnot v poli data a času (EDM. DateTimeOffset). Tato funkce má boostingDuration atribut, takže můžete zadat hodnotu, která představuje časový rozsah, přes který probíhá zvyšování úrovně.
vyjádřit Zvyšuje se na základě toho, jak je číselná hodnota vysoká nebo nízká. Mezi scénáře, které volají tuto funkci, patří zvýšení úrovně zisku za ziskové marže, nejvyšší cena, nejnižší cena nebo počet souborů ke stažení. Tato funkce se dá použít jenom s poli EDM. Double a Edm.Int. U funkce velikost můžete změnit rozsah, maximum na minimum, pokud chcete inverzní vzorek (například pro zvýšení ceny položek s nižší cenou více než zboží s vyšší cenou). V případě škály cen od $100 do $1 byste nastavili "boostingRangeStart" na 100 a "boostingRangeEnd" na 1, aby se zvýšily množství položek snížení ceny.
délku Zvýšení blízkosti nebo geografické polohy. Tato funkce se dá použít jenom s poli EDM. GeographyPoint.
Inteligentní Zvyšuje se značkami, které jsou společné pro hledání dokumentů i řetězců dotazů. Značky jsou k dispozici v tagsParameter . Tato funkce se dá použít jenom s poli EDM. String a Collection (EDM. String).

Pravidla pro používání funkcí

  • Funkce lze použít pouze pro pole, která mají atribut Filtered.
  • Typ funkce ("aktuálnost", "velikost", "vzdálenost", "značka") musí být malá písmena.
  • Funkce nesmí obsahovat hodnoty null nebo prázdné hodnoty.

Template (Šablona)

Tato část ukazuje syntaxi a šablonu pro profily vyhodnocování. Popisy atributů profilu bodování najdete v části Reference k vlastnostem v následující části.

"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) "...", 

Odkaz na vlastnost

Atribut Popis
name Povinná hodnota. Toto je název profilu vyhodnocování. Řídí se stejnými zásadami pro pojmenování pole. Musí začínat písmenem, nesmí obsahovat tečky, dvojtečky nebo @ symboly a nemůže začínat frází azureSearch (rozlišuje velká a malá písmena).
text Obsahuje vlastnost váhy.
weights Nepovinný parametr. Páry název-hodnota, které určují prohledávatelné pole a kladné celé číslo nebo číslo s plovoucí desetinnou čárkou, podle kterého se má zvyšovat skóre pole. Kladné celé číslo nebo číslo se nastaví jako násobitel pro původní skóre pole generované algoritmem hodnocení. Pokud je například skóre pole 2 a hodnota váhy je 3, zvýší se skóre tohoto pole na 6. Jednotlivé skóre polí se pak agreguje tak, aby se vytvořilo skóre pole dokumentu, které se pak použije k zařazení dokumentu do sady výsledků.
– funkce Nepovinný parametr. Funkci bodování lze použít pouze pro pole, která lze filtrovat.
funkce > typ Vyžaduje se pro funkce bodování. Určuje typ funkce, která se má použít. Platné hodnoty zahrnují velikost, aktuálnost, vzdálenost a značku. Do každého profilu vyhodnocování můžete zahrnout více než jednu funkci. Název funkce musí být malými písmeny.
funkce > zvýšení úrovně Vyžaduje se pro funkce bodování. Kladné číslo, které se používá jako násobitel pro nezpracované skóre. Nemůže být rovna 1.
Functions > NázevPole Vyžaduje se pro funkce bodování. Funkci bodování lze použít pouze pro pole, která jsou součástí kolekce polí indexu a která jsou filtrovatelné. Kromě toho každý typ funkce zavádí další omezení (aktuálnost se používá s poli DateTime, rozsah s celočíselnými nebo dvojitými poli a vzdáleností s poli umístění). Pro každou definici funkce můžete zadat jenom jedno pole. Chcete-li například použít velikost dvakrát ve stejném profilu, je třeba zahrnout velikost dvou definic, jednu pro každé pole.
funkce > interpolace Vyžaduje se pro funkce bodování. Definuje sklon, pro který se zvyšování skóre zvyšuje od začátku rozsahu až po konec rozsahu. Mezi platné hodnoty patří lineární (výchozí), konstanta, kvadratická a logaritmická. Podrobnosti najdete v tématu Nastavení interpolací .
funkce > velikost Funkce hodnocení velikosti se používá ke změně pořadí na základě rozsahu hodnot číselného pole. Mezi nejběžnější příklady použití patří:

Hodnocení hvězdičkami: Změna bodování na základě hodnoty v poli hodnocení hvězdičkami. V případě, že jsou relevantní dvě položky, zobrazí se jako první položka s vyšším hodnocením.
"Marže:" když jsou relevantní dva dokumenty, může maloobchodní prodejce chtít zvýšit dokumenty, které mají vyšší marže jako první.
"Kliknutí na počty:" pro aplikace, které sledují kliknutí prostřednictvím akcí na produkty nebo stránky, můžete použít velikost ke zvýšení počtu položek, které mají za následek největší přenos.
"Počty stažení:" pro aplikace, které sledují stahování, funkce velikost umožňuje zvýšit počet položek, které mají nejvíce souborů ke stažení.
funkce > velikosti > boostingRangeStart Nastaví počáteční hodnotu rozsahu, jehož velikost je vyhodnocena. Hodnota musí být celé číslo nebo číslo s plovoucí desetinnou čárkou. Pro hodnocení hvězdičkami 1 až 4 by to bylo 1. Pro okraje větší než 50% by to bylo 50.
funkce > velikosti > boostingRangeEnd Nastaví koncovou hodnotu rozsahu, jehož velikost je vyhodnocena. Hodnota musí být celé číslo nebo číslo s plovoucí desetinnou čárkou. Pro hodnocení hvězdičkami 1 až 4 by to bylo 4.
funkce > velikosti > constantBoostBeyondRange Platné hodnoty jsou true nebo false (výchozí). Při nastavení na hodnotu true bude úplný nárůst platit i pro dokumenty, které mají hodnotu pro cílové pole, které je vyšší než horní konec rozsahu. Pokud je hodnota false, zvýšení této funkce se nepoužije na dokumenty, které mají hodnotu cílového pole, které spadají mimo rozsah.
funkce > aktuálnost Funkce pro vyhodnocování aktuálnosti se používá pro změnu hodnocení skóre pro položky na základě hodnot v polích DateTimeOffset. Například položka s novějším datem může být seřazena více než staršími položkami.

Je také možné seřadit položky, jako jsou například události kalendáře s budoucími kalendářními daty, aby se položky blíže k tomuto seznamu mohly v budoucnu seřadit výše než položky.

V aktuální verzi služby bude jeden konec rozsahu pevně stanoven na aktuální čas. Druhý konec je čas v minulosti na základě boostingDuration. K nárůstu rozsahu časů v budoucnu použijte negativní boostingDuration.

Frekvence, s jakou se zvyšují změny z maximálního a minimálního rozsahu, je určena interpolací použitou pro profil vyhodnocování (viz následující obrázek). Chcete-li obrátit faktor zvýšení úrovně, vyberte faktor zvýšení, který je menší než 1.
funkce > aktuálnost > boostingDuration Nastaví období vypršení platnosti, po kterém se u konkrétního dokumentu zastaví zvýšení úrovně. Syntaxe a příklady najdete v tématu set boostingDuration v následující části.
funkce > vzdálenost Funkce bodování vzdálenosti se používá k ovlivnění skóre dokumentů na základě toho, jak blízko nebo daleko jsou relativní vzhledem k geografickému umístění odkazu. Referenční umístění je zadáno jako součást dotazu v parametru (pomocí parametru dotazu scoringParameter) jako argument Lon, lat.
funkce > vzdálenost > referencePointParameter Parametr, který se má předat v dotazech, který se má použít jako referenční umístění (pomocí parametru dotazu scoringParameter). Popisy parametrů dotazů naleznete v tématu Search Documents (REST API) .
funkce > vzdálenost > boostingDistance Číslo, které označuje vzdálenost v kilometrech od místa odkazu, kde končí rozsah zvyšování úrovně.
Značka > funkcí Funkce bodování značek se používá k ovlivnění skóre dokumentů na základě značek v dokumentech a vyhledávacích dotazech. Dokumenty, které mají Tagy společné s vyhledávacím dotazem, se budou zvyšovat. Značky pro vyhledávací dotaz jsou k dispozici jako parametr bodování v každé žádosti o vyhledávání (pomocí parametru dotazu scoringParameter).
Functions > tag > tagsParameter Parametr, který se má předat v dotazech k určení značek pro konkrétní požadavek (pomocí parametru dotazu scoringParameter). Popisy parametrů dotazů naleznete v tématu Search Documents (REST API) .
funkce > functionAggregation Nepovinný parametr. Platí pouze v případě, že jsou zadány funkce. Platné hodnoty jsou: Sum (výchozí), Average, minim, maximum a firstMatching. Skóre hledání je jediná hodnota, která je vypočítána z více proměnných, včetně více funkcí. Tento atribut určuje, jakým způsobem jsou kombinování všech funkcí zkombinovány do jediného souhrnného zvýšení, které je následně použito pro základní skóre dokumentu. Základní skóre vychází z hodnoty TF-IDF vypočítané z dokumentu a vyhledávacího dotazu.
defaultScoringProfile Pokud není zadán žádný profil vyhodnocování, je při spuštění žádosti o vyhledávání použit výchozí bodování (pouzeTF-IDF ).

Můžete přepsat vestavěnou výchozí hodnotu a nahradit vlastní profil jako takový, který se použije, když se v žádosti o vyhledávání neurčí žádný konkrétní profil.

Nastavit interpoly

Interpolace umožňují nastavit tvar sklonu, který se používá pro bodování. Vzhledem k tomu, že je bodování vysoké, je sklon vždy nižší, ale interpolace určuje křivku sklonu dolů. Můžete použít následující interpolace:

Interpolace Description
linear U položek, které jsou v rozsahu Max a min, se zvýšení použité pro položku provede v nepřetržitém snížení množství. Lineární je výchozí interpolací pro profil vyhodnocování.
constant Pro položky, které jsou v rozsahu od začátku do konce, se pro výsledky řazení použije konstantní zvýšení.
quadratic V porovnání s lineární interpolací, která má neustále se zmenšující zvýšení, se zpočátku zkrátí na menší tempo a pak při blížící se k koncovému rozsahu se zmenší v mnohem větším intervalu. Tato možnost interpolace není povolená ve funkcích bodování značek.
logarithmic V porovnání s lineární interpolací, která má neustále se zmenšující zvýšení, se logaritmická hodnota zpočátku zmenší při větším tempu a potom se blíží koncovému rozsahu, sníží se v mnohem kratším intervalu. Tato možnost interpolace není povolená ve funkcích bodování značek.

Konstanta, lineární, kvadratická, log10 –ová čára v grafu

Nastavení boostingDuration

boostingDuration je atributem freshness funkce. Použijete ji k nastavení období vypršení platnosti, po kterém se u konkrétního dokumentu zastaví zvyšování úrovně. Chcete-li například zvýšit množství produktů nebo označení na 10 dní propagačního období, zadejte pro tyto dokumenty 10 dní tečku jako "P10D".

boostingDuration musí být formátován jako hodnota XSD "dayTimeDuration" (omezená podmnožina hodnoty Duration ISO 8601). Vzor pro tuto položku je: "P [nD] [T [nH] [nM] [nS]]".

Následující tabulka uvádí několik příkladů.

Doba trvání boostingDuration
1 den "P1D"
2 dny a 12 hodin "P2DT12H"
15 minut "PT15M"
30 dní, 5 hodin, 10 minut a 6,334 sekund "P30DT5H10M 6.334 S"

Další příklady naleznete v tématu schéma XML: DataTypes (w3.org Web).

Viz také