Arama puanlarını artırmak için puanlama profilleri ekleme

Bu makalede puanlama profili tanımlamayı öğreneceksiniz. Puanlama profili, sağladığınız parametrelere göre arama puanını artırma ölçütüdür. Örneğin, "etiketler" alanında bulunan eşleşmelerin "açıklamalarda" bulunan eşleşmeden daha ilgili olmasını isteyebilirsiniz. Ölçütler ağırlıklı bir alan (örneğin, "etiketler" örneği) veya bir işlev olabilir.

Puanlama profilleri bir arama dizininde tanımlanır ve sorgu isteklerindeki vektör olmayan alanlarda çağrılır. Birden çok profil oluşturabilir ve ardından sorgu mantığını değiştirerek hangisinin kullanılacağını seçebilirsiniz.

Dekont

İlgi kavramlarını bilmiyor musunuz? YouTube'daki aşağıdaki video segmenti, Azure AI Search'te puanlama profillerinin nasıl çalıştığına hızlı bir şekilde iletmektedir. Daha fazla arka plan için Azure AI Search'te İlgi ve puanlama'yı da ziyaret edebilirsiniz.

Puanlama profili tanımı

Puanlama profili, dizin şemasında tanımlanan nesne olarak adlandırılır. Profil ağırlıklı alanlardan, işlevlerden ve parametrelerden oluşabilir.

Aşağıdaki tanımda "geo" adlı basit bir profil gösterilmektedir. Bu örnek, hotelName alanında arama terimi olan sonuçları artırır. Ayrıca işlevi, distance geçerli konuma 10 kilometre mesafedeki sonuçları tercih etmek için kullanır. Birisi 'inn' terimini ararsa ve 'inn' otel adının bir parçasıysa, geçerli konumun 10 KM yarıçapı içinde 'inn' olan otelleri içeren belgeler arama sonuçlarında daha yüksek görünür.

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

Bu puanlama profilini kullanmak için sorgunuz istekte scoringProfile parametresini belirtmek üzere formüle edilir. REST API kullanıyorsanız sorgular GET ve POST istekleri aracılığıyla belirtilir. Aşağıdaki örnekte, "currentLocation" tek bir tire (- ) sınırlayıcıya sahiptir. Bunu boylam ve enlem koordinatları izler ve boylam negatif bir değerdir.

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

POST kullanırken söz dizimi farklılıklarına dikkat edin. POST'ta "scoringParameters" çoğuldur ve bir dizidir.

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

Bu sorgu "inn" terimini arar ve geçerli konumu geçirir. Bu sorguda scoringParameter gibi başka parametreler bulunduğuna dikkat edin. "scoringParameter" dahil olmak üzere sorgu parametreleri, Arama Belgeleri (REST API) bölümünde açıklanmıştır.

Puanlama profilinin daha ayrıntılı bir örneğini gözden geçirmek için Genişletilmiş örneğine bakın.

Puanlar nasıl hesaplanır?

Puanlar, tam metin arama sorguları için hesaplanır. Eşleşmeler, eşleşmenin ne kadar ilgili olduğuna göre puanlanır ve sorgu yanıtında en yüksek puan eşleşmeleri döndürülür. Her belgenin genel puanı, her alan için ayrı ayrı puanların bir toplamıdır; burada her alanın tek tek puanı, söz konusu alan içinde arama yapılan terimlerin (TF-IDF veya terim sıklığı ters belge sıklığı olarak bilinir) terim sıklığına ve belge sıklığına göre hesaplanır.

Arama sonuçlarıyla (alan düzeyi puanları dahil) ek puanlama ayrıntıları istemek için featuresMode (önizleme) parametresini kullanabilirsiniz.

Puanlama mantığı ne zaman eklenir?

Varsayılan derecelendirme davranışı iş hedeflerinizi karşılamada yeterince ileri gitmediğinde bir veya daha fazla puanlama profili oluşturmanız gerekir. Örneğin, arama ilgi alanının yeni eklenen öğeleri tercih etmesi gerektiğine karar vekleyebilirsiniz. Benzer şekilde, kar marjı içeren bir alanınız veya gelir potansiyelini gösteren başka bir alanınız olabilir. Kullanıcılarınız veya işletmeniz için daha anlamlı olan sonuçları artırmak genellikle puanlama profillerinin benimsenmesinde belirleyici faktördür.

Bir arama sayfasındaki İlgi tabanlı sıralama, puanlama profilleri aracılığıyla da uygulanır. Geçmişte kullandığınız ve fiyata, tarihe, derecelendirmeye veya ilgi düzeyine göre sıralamanızı sağlayan arama sonuçları sayfalarını göz önünde bulundurun. Azure AI Search'te puanlama profilleri'ni kullanarak 'ilgi' seçeneğini kullanabilirsiniz. İlgi tanımı, kullanıcı tanımlıdır, iş hedeflerine ve sunmak istediğiniz arama deneyiminin türüne göre belirlenir.

Puanlama profili ekleme adımları

Özel puanlama davranışı uygulamak için şemaya dizini tanımlayan bir puanlama profili ekleyin. Bir dizinde en fazla 100 puanlama profiliniz olabilir (bkz . Hizmet Sınırları), ancak belirli bir sorguda aynı anda yalnızca bir profil belirtebilirsiniz.

  1. Dizin tanımıyla başlayın. Var olan bir dizine puanlama profillerini yeniden oluşturmak zorunda kalmadan ekleyebilir ve güncelleştirebilirsiniz. Düzeltmenizi göndermek için bir Güncelleştirme Dizini isteği kullanın.

  2. Bu makalede sağlanan Şablona yapıştırın.

  3. Bir ad girin. Puanlama profilleri isteğe bağlıdır, ancak bir profil eklerseniz ad gereklidir. Alanlar için Azure AI Search adlandırma kurallarını izlediğinden emin olun (harfle başlar, özel karakterleri ve ayrılmış sözcükleri önler).

  4. Artırma ölçütlerini belirtin. Tek bir profil ağırlıklı alanlar, işlevler veya her ikisini de içerebilir.

Belirli bir profilin etkinliğini kanıtlamanıza veya yok saymanıza yardımcı olacak bir veri kümesi kullanarak yinelemeli bir şekilde çalışmanız gerekir.

Puanlama profilleri, aşağıdaki ekran görüntüsünde gösterildiği gibi Azure portalında veya REST API'leri aracılığıyla veya .NET için Azure SDK'sında ScoringProfile sınıfı gibi Azure SDK'larında program aracılığıyla tanımlanabilir.

Add scoring profiles page

Ağırlıklı alanları kullanma

Alan bağlamı önemli olduğunda ve sorgular tam metin araması olduğunda ağırlıklı alanlar kullanın. Örneğin, bir sorgu "airport" terimini içeriyorsa, Açıklama alanındaki "havaalanı" ifadesinin HotelName değerinden daha fazla ağırlığa sahip olmasını isteyebilirsiniz.

Ağırlıklı alanlar aranabilir bir alandan ve çarpan olarak kullanılan pozitif bir sayıdan oluşur. HotelName'in özgün alan puanı 3 ise, bu alanın artırılan puanı 6 olur ve üst belgenin kendisi için daha yüksek bir genel puana katkıda bulunur.

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

İşlevleri kullanma

Basit göreli ağırlıklar yetersiz olduğunda veya uygulanmadığında, sayısal veriler üzerinde yapılan hesaplamalar olan uzaklık ve tazelik durumlarında olduğu gibi işlevleri kullanın. Puanlama profili başına birden çok işlev belirtebilirsiniz. Azure AI Search'te kullanılan EDM veri türleri hakkında daha fazla bilgi için bkz . Desteklenen veri türleri.

İşlev Tanım
"tazelik" Tarih saat alanındaki (Edm.DateTimeOffset) değerlere göre artırır. Bu işlevin bir "boostingDuration" özniteliği vardır, böylece artırmanın gerçekleştiği zaman aralığını temsil eden bir değer belirtebilirsiniz.
"büyüklük" Sayısal değerin ne kadar yüksek veya düşük olduğuna göre artırır. Bu işlevi çağıran senaryolar arasında kar marjı, en yüksek fiyat, en düşük fiyat veya indirme sayısına göre artırma sayılabilir. Bu işlev yalnızca ve Edm.Int alanlarıyla Edm.Double kullanılabilir. Büyük işlev için, ters deseni istiyorsanız (örneğin, düşük fiyatlı öğeleri daha yüksek fiyatlı öğelerden daha fazla artırmak için) aralığı tersine çevirebilirsiniz. 100 ABD doları ile 1 ABD doları arasında bir fiyat aralığı göz önüne alındığında, daha düşük fiyatlı öğeleri artırmak için "boostingRangeStart" değerini 100 ve "boostingRangeEnd" değerini 1 olarak ayarlarsınız.
"uzaklık" Yakınlık veya coğrafi konuma göre artırır. Bu işlev yalnızca alanlarla Edm.GeographyPoint kullanılabilir.
"etiket" Hem arama belgelerinde hem de sorgu dizelerinde ortak olan etiketlere göre artırır. Etiketler bir "tagsParameter" içinde sağlanır. Bu işlev yalnızca ve Collection(Edm.String)türünde Edm.String arama alanlarıyla kullanılabilir.

İşlevleri kullanma kuralları

  • İşlevler yalnızca filtrelenebilir olarak özniteliklendirilen alanlara uygulanabilir.
  • İşlev türü ("freshness", "magnitude", "distance", "tag") küçük harf olmalıdır.
  • İşlevler null veya boş değerler içeremez.

Şablon

Bu bölümde, puanlama profilleri için söz dizimi ve şablon gösterilir. Puanlama profili özniteliklerinin açıklamaları için sonraki bölümdeki Özellik başvurusuna bakın.

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

Özellik başvurusu

Öznitelik Tanım
name Gerekli. Bu, puanlama profilinin adıdır. Bir alanın adlandırma kurallarının aynısını izler. Bir harfle başlamalıdır, nokta, iki nokta veya @ simgesi içeremez ve azureSearch (büyük/küçük harfe duyarlı) tümceciğiyle başlayamaz.
text Weights özelliğini içerir.
Ağırlık isteğe bağlı. Aranabilir bir alan ve bir alanın puanını artırmak için pozitif bir tamsayı veya kayan nokta numarası belirten ad-değer çiftleri. Pozitif tamsayı veya sayı, derecelendirme algoritması tarafından oluşturulan özgün alan puanının çarpanı olur. Örneğin, alan puanı 2 ve ağırlık değeri 3 ise, alanın artırılan puanı 6 olur. Tek tek alan puanları toplanıp bir belge alanı puanı oluşturulur ve sonuç kümesindeki belgeyi sıralamak için kullanılır.
işlevleri isteğe bağlı. Puanlama işlevi yalnızca filtrelenebilir alanlara uygulanabilir.
işlev > türü Puanlama işlevleri için gereklidir. Kullanılacak işlevin türünü gösterir. Geçerli değerler arasında büyüklük, tazelik, uzaklık ve etiket bulunur. Her puanlama profiline birden fazla işlev ekleyebilirsiniz. İşlev adı küçük harf olmalıdır.
işlevleri > artırma Puanlama işlevleri için gereklidir. Ham puan için çarpan olarak kullanılan pozitif bir sayı. 1'e eşit olamaz.
functions > fieldname Puanlama işlevleri için gereklidir. Puanlama işlevi yalnızca dizinin alan koleksiyonunun parçası olan ve filtrelenebilir alanlara uygulanabilir. Buna ek olarak, her işlev türü ek kısıtlamalar getirir (güncellik tarih saat alanları, tamsayı veya çift alanlı büyüklük ve konum alanlarıyla uzaklık ile kullanılır). İşlev tanımı başına yalnızca tek bir alan belirtebilirsiniz. Örneğin, aynı profilde iki kez büyüklük kullanmak için, her alan için bir tane olmak üzere iki tanım eklemeniz gerekir.
işlevler > ilişkilendirmesi Puanlama işlevleri için gereklidir. Puanı artırmanın aralığın başlangıcından aralığın sonuna kadar arttığı eğimi tanımlar. Geçerli değerler Doğrusal (varsayılan), Sabit, İkincil ve Logaritmik değerleridir. Ayrıntılar için bkz . İlişkilendirmeleri ayarlama.
işlev > büyüklüğü Sayı alanı için değer aralığına göre derecelendirmeleri değiştirmek için büyüklük puanlama işlevi kullanılır. Bunun en yaygın kullanım örneklerinden bazıları şunlardır:

"Yıldız derecelendirmeleri:" "Yıldız Derecelendirmesi" alanındaki değere göre puanlamada değişiklik yapın. İki öğe ilgili olduğunda, önce daha yüksek derecelendirmeye sahip öğe görüntülenir.
"Kenar Boşluğu:" İki belge uygun olduğunda, bir satıcı önce daha yüksek kenar boşluklarına sahip belgeleri artırmak isteyebilir.
"Tıklama sayıları:" Ürünlere veya sayfalara yapılan eylemleri izleyen uygulamalar için, en çok trafiği alma eğiliminde olan öğeleri artırmak için büyüklüğünü kullanabilirsiniz.
"İndirme sayıları:" İndirmeleri izleyen uygulamalar için, büyüklük işlevi en çok indirilen öğeleri artırmanıza olanak tanır.
işlevlerin >> büyüklüğünü artırmaRangeStart Büyüklüğün puanlandığı aralığın başlangıç değerini ayarlar. Değer bir tamsayı veya kayan noktalı sayı olmalıdır. 1 ile 4 arasında yıldız derecelendirmeleri için bu değer 1 olacaktır. %50'nin üzerindeki kenar boşlukları için bu 50 olur.
işlevler > büyüklüğünü > artırmaRangeEnd Büyüklüğün puanlandığı aralığın bitiş değerini ayarlar. Değer bir tamsayı veya kayan noktalı sayı olmalıdır. 1 ile 4 arasında yıldız derecelendirmeleri için bu değer 4 olacaktır.
functions > magnitude > constantBoostBeyondRange Geçerli değerler true veya false (varsayılan) değerleridir. True olarak ayarlandığında, tam yükseltme, hedef alan için değeri aralığın üst ucundan yüksek olan belgelere uygulanmaya devam eder. False ise, bu işlevin artırılması, hedef alan için aralığın dışında kalan bir değere sahip belgelere uygulanmaz.
işlevler > yeniliği Güncellik puanlama işlevi, DateTimeOffset alanlarındaki değerlere göre öğelerin derecelendirme puanlarını değiştirmek için kullanılır. Örneğin, daha yeni bir tarihe sahip bir öğe eski öğelerden daha yüksek sıralanabilir.

Takvim olayları gibi öğeleri gelecekteki tarihlerle sıralamak da mümkündür; böylece günümüze daha yakın olan öğeler gelecekte daha fazla öğeden daha yüksek derecelenebilir.

Geçerli hizmet sürümünde aralığın bir ucu geçerli saate sabitlenir. Diğer uç ise boostingDuration'a göre geçmişteki bir zamandır. Gelecekte bir dizi zamanı artırmak için negatif boostingDuration kullanın.

Artırmanın maksimum ve en düşük aralıktan değişme oranı, puanlama profiline uygulanan İlişkilendirme tarafından belirlenir (aşağıdaki şekile bakın). Uygulanan artırma faktörünü tersine çevirmek için 1'den küçük bir artırma faktörü seçin.
işlev > tazeliğini > artırmaDuration Belirli bir belge için yükseltmenin durdurulacağı bir süre sonu dönemi ayarlar. Söz dizimi ve örnekler için aşağıdaki bölümde boostingDuration ayarlama bölümüne bakın.
işlev > uzaklığı Uzaklık puanlama işlevi, belgelerin puanını başvuru coğrafi konumuna göre ne kadar yakın veya uzak olduklarına göre etkilemek için kullanılır. Başvuru konumu, parametredeki sorgunun bir parçası olarak (scoringParameter sorgu parametresi kullanılarak) bağımsız lon,lat değişken olarak verilir.
işlevler > uzaklık > başvurusuPointParameter Başvuru konumu olarak kullanılacak sorgulara geçirilecek parametre (scoringParameter sorgu parametresi kullanılarak).
işlevler > uzaklığı > artırmaDistance Artırma aralığının sona erdiği başvuru konumundan kilometre cinsinden uzaklığı gösteren sayı.
functions > etiketi Etiket puanlama işlevi, belgelerdeki etiketlere ve arama sorgularına göre belgelerin puanını etkilemek için kullanılır. Arama sorgusuyla ortak etiketleri olan belgeler artırılır. Arama sorgusu etiketleri her arama isteğinde bir puanlama parametresi olarak sağlanır (scoringParameter sorgu parametresi kullanılarak).
functions > tag > tagsParameter Belirli bir isteğin etiketlerini belirtmek için sorgulara geçirilecek parametre (scoringParameter sorgu parametresi kullanılarak). parametresi, tüm terimlerin virgülle ayrılmış bir listesinden oluşur. Listedeki belirli bir etiket kendisi virgülle ayrılmış bir listeyse, sorgu zamanında virgülleri çıkarmak (virgül karakterini boşlukla eşlemek) için alanda bir metin normalleştiricisi kullanabilirsiniz. Bu yaklaşım, tüm terimlerin virgülle ayrılmış tek ve uzun bir dize olması için listeyi "düzleştirme".
functionAggregation isteğe bağlı. Yalnızca işlevler belirtildiğinde geçerlidir. Geçerli değerler şunlardır: sum (varsayılan), average, minimum, maximum ve firstMatching. Arama puanı, birden çok işlev dahil olmak üzere birden çok değişkenden hesaplanan tek bir değerdir. Bu öznitelik, tüm işlevlerin yükseltmelerinin, temel belge puanına uygulanan tek bir toplama artışında nasıl birleştirildiğini gösterir. Temel puan, belgeden ve arama sorgusundan hesaplanan tf-idf değerini temel alır.
defaultScoringProfile Arama isteği yürütülürken, puanlama profili belirtilmezse varsayılan puanlama kullanılır (yalnızca tf-idf ).

Arama isteğinde belirli bir profil verilmediğinde kullanılacak özel profil olarak değiştirerek yerleşik varsayılanı geçersiz kılabilirsiniz.

İlişkilendirmeleri ayarlama

İlişkilendirmeler, puanlama için kullanılan eğimin şeklini ayarlamanıza olanak tanır. Puanlama yüksekten düşüke doğru olduğundan eğim her zaman azalır, ancak ilişkilendirme aşağı eğimin eğrisini belirler. Aşağıdaki ilişkilendirmeler kullanılabilir:

Enterpolasyon Tanım
linear Maksimum ve en düşük aralıktaki öğeler için, öğeye uygulanan artış sürekli azalan bir miktarda yapılır. Doğrusal, puanlama profili için varsayılan ilişkilendirmedir.
constant Başlangıç ve bitiş aralığındaki öğeler için sıralama sonuçlarına sabit bir yükseltme uygulanır.
quadratic Sürekli azalan bir artışa sahip doğrusal ilişkilendirmeye kıyasla, İkincil başlangıçta daha küçük bir hızda azalır ve ardından bitiş aralığına yaklaştıkça çok daha yüksek bir aralıkta azalır. Etiket puanlama işlevlerinde bu ilişkilendirme seçeneğine izin verilmez.
logarithmic Logaritmik, sürekli azalan bir artışa sahip doğrusal ilişkilendirmeye kıyasla başlangıçta daha yüksek hızda azalır ve ardından bitiş aralığına yaklaştıkça çok daha küçük bir aralıkta azalır. Etiket puanlama işlevlerinde bu ilişkilendirme seçeneğine izin verilmez.

Constant, linear, quadratic, log10 lines on graph

BoostingDuration'ı ayarlama

boostingDuration işlevin freshness özniteliğidir. Bunu, belirli bir belge için yükseltmenin durdurulacağı bir süre sonu dönemi ayarlamak için kullanırsınız. Örneğin, bir ürün serisini veya markayı 10 günlük promosyon dönemi boyunca artırmak için, bu belgeler için 10 günlük süreyi "P10D" olarak belirtmeniz gerekir.

boostingDuration XSD "dayTimeDuration" değeri (ISO 8601 süre değerinin kısıtlanmış bir alt kümesi) olarak biçimlendirilmelidir. Bunun deseni: "P[nD][T[nH][nM][nS]]".

Aşağıdaki tabloda birkaç örnek verilmiştir.

Süre boostingDuration
1 gün "P1D"
2 gün 12 saat "P2DT12H"
15 dakika "PT15M"
30 gün, 5 saat, 10 dakika ve 6,334 saniye "P30DT5H10M6.334S"

Daha fazla örnek için bkz . XML Şeması: Veri Türleri (W3.org web sitesi).

Genişletilmiş örnek

Aşağıdaki örnek, iki puanlama profiline (boostGenre, newAndHighlyRated) sahip bir dizinin şemasını gösterir. Bu dizinde sorgu parametresi olarak her iki profili de içeren tüm sorgular, sonuç kümesini puanlama amacıyla profili kullanır.

Profilde boostGenre ağırlıklı metin alanları kullanılır ve albumTitle, genre ve artistName alanlarında bulunan eşleşmeler artırılır. Alanlar sırasıyla 1,5, 5 ve 2 artırılır. Neden tarz diğerlerinden çok daha yüksek bir şekilde artırılıyor? Biraz homojen olan veriler üzerinde arama yapılırsa (musicstoreindex'te 'tarz' gibi), göreli ağırlıklarda daha büyük bir varyansa ihtiyacınız olabilir. Örneğin, musicstoreindex'te 'rock' hem bir tür olarak hem de aynı tümcecikli tarz açıklamalarında görünür. Tarz açıklamasının daha ağır basmasını istiyorsanız, tarz alanının çok daha yüksek bir göreli ağırlığa ihtiyacı olacaktır.

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

Ayrıca bkz.