Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Puanlama profilleri, kullanıcı tanımlı ölçütlere göre eşleşen belgelerin derecelendirmesini artırmak veya engellemek için kullanılır. Bu makalede, sağladığınız parametrelere göre arama puanını artıran bir puanlama profili belirtmeyi ve atamayı öğrenin. Şunlara dayanarak puanlama profilleri oluşturabilirsiniz:
Artırmanın belirlenen bir alanda bulunan eşleşmeyi temel aldığı ağırlıklı dize alanları. Örneğin, "Konu" alanında bulunan eşleşmeler, "Açıklama" alanında bulunan eşleşmeden daha ilgili kabul edilir.
Tarihler ve coğrafi koordinatlar dahil olmak üzere sayısal alanlar için işlevler. Sayısal içerik işlevleri uzaklığı artırmayı destekler (coğrafi koordinatlar için geçerlidir), güncellik (tarih saat alanları için geçerlidir), aralık ve büyüklük.
Dize koleksiyonları (etiketler) işlevleri. Etiketler işlevi, koleksiyondaki herhangi bir öğe sorguyla eşleşiyorsa belgenin arama puanını artırır.
(önizleme) Farklı iyileştirmelerin bir toplamı. Tek bir puanlama profilinde birden çok puanlama işlevi belirtebilir ve ardından ayarlayabilirsiniz
"functionAggregation": "product". Tüm işlevlerde yüksek puan alan belgeler önceliklendirilirken, bir veya daha fazla alanda zayıf puan alan belgeler gizleniyor.
Azure portalında JSON tanımını düzenleyerek veya Create or Update Index REST API ya da herhangi bir Azure SDK'daki eşdeğer dizin güncelleştirme API'leri gibi API'ler aracılığıyla bir dizine puanlama profili ekleyebilirsiniz. Dizine alınan belgeler üzerinde hiçbir etkisi olmayan bir puanlama profili ekleyebilmeniz, değiştirebilmeniz veya silebilmeniz için dizin yeniden oluşturma gereksinimi yoktur.
Bu makalenin sonunda, alan ağırlıklarına, güncelliğe, uzaklığa veya özel ölçütlere göre arama ilgi düzeyini artırmak için puanlama profilleri oluşturabilir ve uygulayabilirsiniz.
Prerequisites
Bir Azure aboneliği. Ücretsiz bir tane oluşturun.
Azure AI Arama hizmeti. Bir hizmet oluşturun veya mevcut bir hizmeti bulun.
Metin veya sayısal (nonvector) alanları olan bir arama dizini.
İzinler: Puanlama profilleriyle dizin oluşturmak veya güncelleştirmek için Arama Dizini Veri Katkıda Bulunanı'na ihtiyacınız vardır. Puanlama profili kullanarak sorgulamak için Arama Dizini Veri Okuyucusu gerekir. Daha fazla bilgi için bkz. Rolleri kullanarak bağlanma.
SDK yüklemesi (isteğe bağlı):
- Piton:
pip install azure-search-documents - C#:
dotnet add package Azure.Search.Documents
- Piton:
Tip
Hemen kod örnekleri için Puanlama profili tanımına atlayın.
Puanlama profilleri için kurallar
Puanlama profillerini anahtar sözcük aramasında, vektör aramasında, karma aramada ve anlamsal yeniden boyutlandırma ile) kullanabilirsiniz. Ancak, puanlama profilleri yalnızca hedefsiz alanlara uygulanır, bu nedenle dizininizde artırılabilir veya ağırlıklı hale getirilebilen metin veya sayısal alanlar olduğundan emin olun.
Bir dizinde en fazla 100 puanlama profiliniz olabilir (bkz. hizmet Sınırları), ancak herhangi bir sorguda aynı anda yalnızca bir profil belirtebilirsiniz.
Puanlama profilleriyle anlam sıralamasını kullanabilir ve anlamsal derecelendirme gerçekleştikten sonra puanlama profili uygulayabilirsiniz. Aksi takdirde, birden çok derecelendirme veya ilgi özelliği kullanımda olduğunda, anlamsal derecelendirme son adımdır. Arama puanlamanın çalışma şekli, işlemlerin sırasını gösteren bir çizim sağlar.
Ek kurallar özellikle işlevler için geçerlidir.
Note
İlgili kavramlara aşina değil misiniz? Daha fazla bilgi için Azure Yapay Zeka Arama'te İlgi ve puanlama sayfasını ziyaret edin. BM25 ile sıralanmış sonuçlarda puanlama profillerini incelemek için bu video kesitini YouTube'da izleyebilirsiniz.
Puanlama profili tanımı
Puanlama profili bir dizin şemasında tanımlanır. Ağırlıklı alanlardan, işlevlerden ve parametrelerden oluşur.
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 distance işlevini, 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 kilometre 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
}
}
]
}
]
Referans: scoringProfiles | scoringFunction | distance işlevi
Bu puanlama profilini kullanmak için, sorgunuz scoringProfile parametresini istekte belirtmek üzere formüle edilmelidir. REST API kullanıyorsanız sorgular GET ve POST istekleri aracılığıyla belirtilir. Aşağıdaki örnekte, "currentLocation" tek bir tire ile sınırlandırılmıştır (-). Bunu boylam ve enlem koordinatları izler ve boylam negatif bir değerdir.
POST /indexes/hotels/docs/search?api-version=2026-04-01
{
"search": "inn",
"scoringProfile": "geo",
"scoringParameters": ["currentLocation--122.123,44.77233"]
}
Başvuru: Arama Belgeleri (REST) | puanlamaProfil parametresi | puanlamaParametreler
dahil olmak üzere scoringParameterssorgu parametreleri , Arama Belgeleri (REST API) bölümünde açıklanmıştır.
Daha fazla senaryo için bu makaledeki tazelik ve uzaklık ile ağırlıklı metin ve işlevlere yönelik örneklere bakın.
SDK'ları kullanarak puanlama profiliyle sorgulama
import os
from azure.identity import DefaultAzureCredential
from azure.search.documents import SearchClient
# Set up the client
endpoint = os.environ["AZURE_SEARCH_ENDPOINT"]
index_name = "hotels"
credential = DefaultAzureCredential()
client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential)
# Execute search with scoring profile
results = client.search(
search_text="inn",
scoring_profile="geo",
scoring_parameters=["currentLocation--122.123,44.77233"],
select=["HotelName", "Description", "Rating"]
)
for result in results:
print(f"{result['HotelName']} (Score: {result['@search.score']})")
Başvuru: SearchClient.search | scoring_profile parametresi
Arama dizinine puanlama profili ekleme
Dizin tanımıyla başlayın. Var olan bir dizine puanlama profillerini yeniden oluşturmak zorunda kalmadan ekleyebilir ve güncelleştirebilirsiniz. Var olan bir dizini aşağı çekmek için Dizin Al'ı ve düzeltme göndermek için Dizin Oluştur veya Güncelleştir isteğini kullanın.
Bu makalede sağlanan şablonu yapıştırın.
Adlandırma kurallarına uygun bir ad sağlayın.
Artırma ölçütlerini belirtin. Tek bir profil metin ağırlıklı alanlar, işlevler veya her ikisini de içerebilir.
Belirli bir profilin etkinliğini kanıtlamanıza veya çürütmenize yardımcı olan bir veri kümesi kullanarak yinelemeli çalışmanız gerekir.
Puanlama profilleri, aşağıdaki ekran görüntüsünde gösterildiği gibi Azure portalında ya da REST API'leri aracılığıyla ya da .NET veya Python istemci kitaplıklarındaki ScoringProfile sınıfı gibi Azure SDK'larında program aracılığıyla tanımlanabilir.
Template
Bu bölümde, puanlama profilleri için söz dizimi ve şablon gösterilir. Özelliklerin açıklaması için bkz . REST API başvurusu.
"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) "...",
Metin ağırlıklı alanları kullanma
Alan bağlamı önemli olduğunda ve sorgular dize alanları içerdiğinde searchable metin ağırlıklı alanlar kullanın. Örneğin, bir sorgu "airport" terimini içeriyorsa, Açıklama alanı yerine HotelName alanında "havaalanı" tercih edebilirsiniz.
Ağırlıklı alanlar, bir searchable alandan oluşan ad-değer çiftleri ve çarpan olarak kullanılan pozitif bir sayıdır. 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": "boostSearchTerms",
"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 Yapay Zeka Arama'te kullanılan EDM veri türleri hakkında daha fazla bilgi için bkz . Desteklenen veri türleri.
| Function | Description | Kullanım örnekleri |
|---|---|---|
| distance | Yakınlık veya coğrafi konum ile artırın. Bu işlev yalnızca Edm.GeographyPoint alanlarıyla kullanılabilir. |
"Yakınımda bul" senaryoları için kullanın. |
| freshness | Tarih saat alanındaki (Edm.DateTimeOffset) değerlere göre artırın.
BoostingDuration değerini, üzerinde artırmanın gerçekleştiği zaman aralığını temsil eden bir değer belirtmek için ayarlayın. |
Daha yeni tarihler vurgulamak istediğinizde kullanın. Takvim olayları gibi gelecekteki tarihlere sahip öğeleri, gelecekte daha uzak tarihlere sahip öğelere kıyasla, şimdiye daha yakın olacak şekilde öne çıkarabilirsiniz. Aralığın bir ucu geçerli saate sabittir. |
| magnitude | Büyüklük, belgenin değeri (tarih veya konum gibi) ile başvuru noktası (örneğin, "şimdi" veya hedef konum) arasındaki hesaplanan uzaklıktır. Puanlama işlevinin girişidir ve ne kadar artırma uygulanacağını belirler. Sayısal alanın değer aralığına göre sıralamaları değiştirin. 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. Bu işlev yalnızca Edm.Double ve Edm.Int alanlarıyla kullanılabilir. Kuvvet fonksiyonu için, ters deseni istiyorsanız (örneğin, düşük fiyatlı ürünleri daha yüksek fiyatlı ürünlerden daha fazla artırmak amacıyla), aralığı yüksekten düşüğe doğru tersine çevirebilirsiniz. 100 ile 1 dolar arasında bir fiyat aralığı göz önüne alındığında, daha düşük fiyatlı öğeleri artırmak için boostingRangeStart 100 olarak ve boostingRangeEnd 1 olarak ayarlayın. |
Kar marjı, derecelendirmeler, tıklama sayıları, indirme sayısı, en yüksek fiyat, en düşük fiyat veya indirme sayısına göre artırmak istediğinizde kullanın. İki öğe ilgili olduğunda, önce daha yüksek derecelendirmeye sahip öğe görüntülenir. |
| tag | Hem arama belgelerinde hem de sorgu ifadelerinde ortak olan etiketlere göre güçlendirin. Etiketler bir tagsParameteriçinde sağlanır. Bu işlev, yalnızca Edm.String ve Collection(Edm.String) türündeki arama alanlarıyla kullanılabilir. |
Etiket alanlarınız olduğunda kullanın. 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". |
Tazelik ve mesafe puanlaması, büyüklüğün bir tarih saat veya coğrafi alandan otomatik olarak hesaplandığı, büyüklüğe dayalı puanlama yapmanın özel durumlarıdır.
İşlevleri kullanma kuralları
- İşlevler yalnızca olarak
filterableözniteliklendirilen alanlara uygulanabilir. - İşlev türü ("freshness", "magnitude", "distance", "tag") küçük harf olmalıdır.
- İşlevler null veya boş değerler içeremez.
- İşlevler, işlev tanımı başına yalnızca tek bir alana sahip olabilir. Aynı profilde büyüklüğü iki kez tanımlamak için, her alan için bir büyüklük tanımı yapın.
İlişkilendirmeleri ayarlama
İlişkilendirmeler, tazeliği ve mesafeyi artırmak için kullanılan eğimin şeklini ayarlar. Puanlama yüksekten düşüğe doğru ilerlediği için eğim sürekli olarak azalır. Ancak enterpolasyon, aşağı eğimin eğrisini ve belgenin tarihi eskidikçe artırma puanının ne kadar hızlı değiştiğini belirler.
| Interpolation | Description |
|---|---|
linear |
Maksimum ve en düşük aralıktaki öğeler için sürekli azalan miktarda artırma uygulanır. İlginin kademeli bir şekilde azalmasını istediğinizde önerilir. 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. Yaşı ne olursa olsun düz bir ceza istiyorsanız bunu kullanın. |
quadratic |
İkincil başlangıçta daha küçük bir hızda azalır ve ardından bitiş aralığına yaklaştıkça hızlanır, çok daha yüksek bir aralıkta azalır. En son belgeleri güçlü bir şekilde tercih etmek ve eski belgeleri keskin bir şekilde indirgemek istediğinizde bu ilişkilendirmeyi kullanın. Etiket puanlama işlevinde bu ilişkilendirme seçeneğine izin verilmez. |
logarithmic |
Logaritmik 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. Çok yeni içerik için güçlü bir tercihiniz olduğunda ancak belgeler yaşlandıkça duyarlılığınız azaldığında önerilir. Etiket puanlama işlevinde bu ilişkilendirme seçeneğine izin verilmez. |
Tazelik işlevi için boostingDuration'ı ayarlama
boostingDuration işlevin freshness özniteliğidir. Bunu, belirli bir belge için artırmanın durdurulduğundan sonraki 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.
| Duration | 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" |
| 1 yıl | "365D" |
Daha fazla örnek için bkz . XML Şeması: Veri Türleri (W3.org web sitesi).
Örnek: tazelik veya mesafeye göre güçlendirme
Puanların aralık genelinde ne kadar agresif değiştiğini artış eğrisinin şekli (sabit, doğrusal, logaritmik, ikinci dereceden) etkiler.
Freshness işlevini kullanırken, artışın daha yeni tarihler üzerinde daha çarpıcı bir etkiye sahip olmasını istiyorsanız ikinci dereceden ilişkilendirmeyi seçin. İkinci dereceden fonksiyon, yakın tarihlerin ve yakın konumların etkisini artırır ve aralığın uzak ucunda etkisini daha yavaş kaybeder. Buna karşılık logaritmik eğri en uçta daha keskin kayar.
İşte tazeliğe göre artırma yapmayı gösteren bir puanlama profili örneği.
{
"name": "docs-index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "filterable": true },
{ "name": "title", "type": "Edm.String", "searchable": true },
{ "name": "content", "type": "Edm.String", "searchable": true },
{ "name": "lastUpdated", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true }
],
"scoringProfiles": [
{
"name": "freshnessBoost",
"text": {
"weights": {
"content": 1.0
}
},
"functions": [
{
"type": "freshness",
"fieldName": "lastUpdated",
"boost": 2.0,
"interpolation": "quadratic",
"parameters": {
"boostingDuration": "365D"
}
}
]
}
]
}
-
freshnessişlevi, "şimdi"denlastUpdated'e kadar olan büyüklüğü hesaplar. - İkinci dereceden enterpolasyon ile pozitif bir artış, son tarihler için kaldırma kuvvetini artırır, eski tarihler için hızla zayıflar.
-
"boostingDuration": "365D", yeniliğin değerlendirildiği zaman penceresini tanımlar; örneğin, geçen yıl içinde tarihlenen belgeleri artırma. -
"interpolation": "quadratic", geçerli tarihe daha yakın belgeler için artırma etkisinin daha güçlü olduğu ve daha eski belgeler için daha keskin bir şekilde azaldığı anlamına gelir.
Sonraki örnekte doğrusal ilişkilendirme, 30 günlük pencerede en son kullanılan içerik için sabit bir tercih sağlar. Diğer ilgi faktörlerine karşı üstün gelmesi gerekiyorsa sinyalin gücünü artırın.
{
"name": "freshness30_linear",
"functions": [
{
"type": "freshness",
"fieldName": "lastUpdated",
"boost": 3.0,
"interpolation": "linear",
"parameters": { "boostingDuration": "P30D" }
}
]
}
Başvuru: tazelik fonksiyonu | arttırmaSüresi
Örnek: Ağırlıklı metin ve fonksiyonlara göre güçlendirme
Tip
Vektör ve üretken yapay zeka senaryolarında puanlama profillerini ve belge artırmayı kullanma tanıtımı için bu blog gönderisine ve not defterine bakın.
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 için 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 tür diğerlerinden çok daha fazla yükseltiliyor? 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. Türün, tür açıklamasından daha ağır basmasını istiyorsanız, tür alanının çok daha yüksek bir göreli ağırlığa ihtiyacı vardı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
}
}
]
}
]
}
Örnek: işlev toplama
Note
Bu özellik şu anda önizleme aşamasındadır ve en son önizleme REST API aracılığıyla ve özelliği sağlayan Azure SDK önizleme paketlerinde kullanılabilir.
Tek bir puanlama profilinde birden çok puanlama işlevi belirtebilir ve ardından ayarlayabilirsiniz "functionAggregation": "product". Tüm işlevlerde yüksek puan alan belgeler önceliklendirilirken, bir veya daha fazla alanda zayıf puan alan belgeler gizleniyor.
Bu örnekte, rating ve baseRate ile güçlendiren iki arttırma işlevi içeren bir puanlama profili oluşturun ve ardından functionAggregation'yi product olarak ayarlayın.
### Create a new index
PUT {{url}}/indexes/hotels-scoring?api-version=2026-05-01-preview
Content-Type: application/json
api-key: {{key}}
{
"name": "hotels-scoring",
"fields": [
{"name": "HotelId", "type": "Edm.String", "key": true, "filterable": true, "facetable": true},
{"name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": true},
{"name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": true, "analyzer": "en.lucene"},
{"name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},
{"name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true},
{"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true},
{"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true},
{"name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true},
{"name": "BaseRate", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
{"name": "Address", "type": "Edm.ComplexType",
"fields": [
{"name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": true, "searchable": true},
{"name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},
{"name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},
{"name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true}
]
}
],
"scoringProfiles": [
{
"name": "productAggregationProfile",
"functions": [
{
"type": "magnitude",
"fieldName": "Rating",
"boost": 2.0,
"interpolation": "linear",
"magnitude": {
"boostingRangeStart": 1.0,
"boostingRangeEnd": 5.0,
"constantBoostBeyondRange": false
}
},
{
"type": "magnitude",
"fieldName": "BaseRate",
"boost": 1.5,
"interpolation": "linear",
"magnitude": {
"boostingRangeStart": 50.0,
"boostingRangeEnd": 400.0,
"constantBoostBeyondRange": false
}
}
],
"functionAggregation": "product"
}
],
"defaultScoringProfile": "productAggregationProfile"
}
Bu sonraki istek, profili test eden aranabilir içerikle dizini yükler.
### Upload documents to the index
POST {{url}}/indexes/hotels-scoring/docs/index?api-version=2026-05-01-preview
Content-Type: application/json
api-key: {{key}}
{
"value": [
{
"@search.action": "upload",
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel",
"Description": "This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
"Category": "Boutique",
"Tags": [ "view", "air conditioning", "concierge" ],
"ParkingIncluded": false,
"LastRenovationDate": "2022-01-18T00:00:00Z",
"Rating": 3.60,
"BaseRate": 200.0,
"Address":
{
"StreetAddress": "677 5th Ave",
"City": "New York",
"StateProvince": "NY",
"PostalCode": "10022"
}
},
{
"@search.action": "upload",
"HotelId": "2",
"HotelName": "Old Century Hotel",
"Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.",
"Category": "Boutique",
"Tags": [ "pool", "free wifi", "concierge" ],
"ParkingIncluded": false,
"LastRenovationDate": "2019-02-18T00:00:00Z",
"Rating": 3.60,
"BaseRate": 150.0,
"Address":
{
"StreetAddress": "140 University Town Center Dr",
"City": "Sarasota",
"StateProvince": "FL",
"PostalCode": "34243"
}
},
{
"@search.action": "upload",
"HotelId": "3",
"HotelName": "Gastronomic Landscape Hotel",
"Description": "The Gastronomic Landscape Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.",
"Category": "Suite",
"Tags": [ "restaurant", "bar", "continental breakfast" ],
"ParkingIncluded": true,
"LastRenovationDate": "2015-09-20T00:00:00Z",
"Rating": 4.80,
"BaseRate": 350.0,
"Address":
{
"StreetAddress": "3393 Peachtree Rd",
"City": "Atlanta",
"StateProvince": "GA",
"PostalCode": "30326"
}
},
{
"@search.action": "upload",
"HotelId": "4",
"HotelName": "Sublime Palace Hotel",
"Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.",
"Tags": [ "concierge", "view", "air conditioning" ],
"ParkingIncluded": true,
"LastRenovationDate": "2020-02-06T00:00:00Z",
"Rating": 4.60,
"BaseRate": 275.0,
"Address":
{
"StreetAddress": "7400 San Pedro Ave",
"City": "San Antonio",
"StateProvince": "TX",
"PostalCode": "78216"
}
}
]
}
Yüksek derecelendirmeye ve yüksek temel orana göre sonuçları yükseltmek için puanlama profilindeki ölçütleri kullanan bir sorgu çalıştırın. Her iki işlevde de yüksek puan alan sonuçları daha fazla ön plana çıkarmak için güçlendirme puanları bir araya getirilir.
### Search with boost
POST {{url}}/indexes/hotels-scoring/docs/search?api-version=2026-05-01-preview
Content-Type: application/json
api-key: {{key}}
{
"search": "expensive and good hotels",
"count": true,
"select": "HotelId, HotelName, Description, Rating, BaseRate",
"scoringProfile": "productAggregationProfile"
}
Bu sorgu için en yüksek yanıt, bir sonraki en yakın eşleşmenin neredeyse iki katı kadar yüksek bir arama puanına sahip "Gastronomik Landscape Hotel"dir. Bu otel hem en yüksek derecelendirmeye hem de en yüksek taban oranına sahiptir, bu nedenle her iki işlevin de bileşimi bu eşleşmeyi en üste yükseltir.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1.0541908,
"HotelId": "3",
"HotelName": "Gastronomic Landscape Hotel",
"Description": "The Gastronomic Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel\u2019s restaurant services.",
"Rating": 4.8,
"BaseRate": 350.0
},
{
"@search.score": 0.53451097,
"HotelId": "2",
"HotelName": "Old Century Hotel",
"Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.",
"Rating": 3.6,
"BaseRate": 150.0
},
{
"@search.score": 0.53185254,
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel",
"Description": "This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
"Rating": 3.6,
"BaseRate": 200.0
},
{
"@search.score": 0.44853577,
"HotelId": "4",
"HotelName": "Sublime Palace Hotel",
"Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.",
"Rating": 4.6,
"BaseRate": 275.0
}
]
}
Ayarlama ipuçları
Muhafazakar bir başlangıç yapın: 1.25–2.0 aralığında artış; ancak yenilik gerçekten belirleyici ise artırın.
Pencere boyutlandırma: Sıcak içerik için P30D, orta düzeyde güncellik için P90D/P180D, uzun kuyruk için P365D kullanın.
İlişkilendirme seçimi:
- son yenilere güçlü bir vurgu yapmak istediğinizde kuadrat.
- sabit bir gradyan istediğinizde doğrusal.
- nazik bir tercih istediğinizde logaritmik.
Toplama: Birden çok işlevi birleştirmek en kolayıdır; tek bir sinyalin hakim olmasını istediğinizde maksimuma geçin
Puanlama profilleriyle ilgili sorunları giderme
Puanlama profilleriyle ilgili yaygın sorunları tanılamak için aşağıdaki tabloyu kullanın.
| Sorun | Olası nedeni | Çözüm |
|---|---|---|
| Puanlama profili uygulanmadı | Sorguda profil adı belirtilmemiş | Arama isteğinize tam profil adıyla parametre ekleyin scoringProfile . |
| Artış etkisi gözlemlenmedi | Alan olarak işaretlenmedi filterable |
İşlevler yalnızca olarak filterableözniteliklendirilen alanlara uygulanabilir. Dizin şemanızı güncelleştirin. |
| Beklenmeyen derecelendirme sonuçları | Takviye değeri çok düşük veya çok yüksek | 1.25–2.0 aralığındaki yükseltme değerleriyle başlayın ve teste göre ayarlayın. |
| Güncellik, son belgeleri desteklemiyor. |
boostingDuration çok kısa veya yanlış biçim |
Süre biçimini doğrulayın (örneğin, 30 gün boyunca "P30D") ve gerekirse pencereyi genişletin. |
| Uzaklık işlevi çalışmıyor | Alan geçerli değil Edm.GeographyPoint |
Distance işlevi yalnızca Edm.GeographyPoint alanlarıyla çalışır. |
| Etiket işlevi destek döndürmez | Etiketler sorgu değerleriyle eşleşmiyor | Arama isteğinin tagsParameterscoringParametersiçindeki eşleşme değerlerini doğrulayın. |
| Profil var ancak sorgu başarısız oluyor | Profilde geçersiz alan adı | Puanlama profilindeki tüm alan adlarının dizin şemasında mevcut olduğundan emin olun. |