Aracılığıyla paylaş


Arama sorgu sonuçlar (tam metin araması) nasıl derecelendirilir

tam metin araması SQL Server bir isteğe bağlı Skor (veya rütbe değer) oluşturabilir, tam metin sorgusu tarafından döndürülen verilerin uygunluğu gösterir. Rütbe bu değeri her satırda hesaplanır ve sonuç sıralamak için sipariş bir ölçüt olarak kullanılan küme yakınlık derecesine göre belirli bir sorgu.Rütbe değerleri uygunluğu sonuç kümesinde satırların yalnızca bir göreli sırasını gösterir.Fiili değerler önemsiz ve genellikle, sorguyu her çalıştırmanızda farklı.Rütbe değeri sorgular arasında herhangi bir anlamlı değer tutmaz.

Not

Yalnızca en ilgili sonuçlar döndürmek için ranked sonuçlar kümeleri sınırlama hakkında daha fazla bilgi için bkz: Ranked sonuç kümesi (tam metin araması) sınırlama.

Sıralaması için istatistikleri

Dizin oluşturulduğunda derecelendirmesi, kullanım istatistiklerini toplanır.Bir tam metin kataloğu oluşturma işlemi, bir tek bir dizin yapısı içinde doğrudan yol açmaz.Bunun yerine, tam metin altyapısını SQL Server veri dizini gibi ara dizinleri oluşturur. Tam metin alt yapısı, bu dizinler sonra gerektiğinde daha büyük bir dizin içinde birleştirir.Bu işlem, pek çok kez yinelenebilen.Tam metin alt yapısı, daha sonra "tüm ara dizinleri geniş bir ana dizini birleştiren bir ana dizin birleştirme" yapar.

Istatistikleri her ara dizin düzeyinde toplanır.Istatistikler, dizinleri birleştirildiğinde birleştirilir.Istatistiksel bazı değerler yalnızca ana işlem birleştirme sırasında oluşturulur.

Çalışırken bir sorgunun sonuç kümesi derecelendirmesi SQL Server en büyük ara dizinden istatistikleri'ni kullanır. Bu, mı yoksa ara dizinler veya birleştirilmiş üzerinde bağlıdır.Ara dizinleri olmayan birleştirilmiş, sonuç olarak, istatistikler derecelendirmesi doğruluk değişebilir.Bu neden aynı sorguyu farklı arama sonuçlar saat içinde tam metin dizini oluşturulmuş veri eklenen, değiştirilen silindi ve ve daha küçük dizinleri birleştirilir gibi dönebilirsiniz açıklıyor.

Dizin ve hesaplama karmaşıklık boyutunu en aza indirmek için , istatistikleri genellikle yuvarlanır.

Aşağıdaki liste, rütbe hesaplamak için önemli olan bazı sık kullanılan terimleri ve istatistik değerleri içerir.

  • Özellik
    Satır tam metin dizini oluşturulmuş sütun.

  • Belge
    Sorgularda verilen bir varlık.Içinde SQL Server Bu işlem için bir satır karşılık gelir. Belge, yalnızca satır, birden çok tam metin dizini oluşturulmuş sütun olabilir gibi birden çok özellikleri sahip olabilir.

  • Dizin
    Tek BIR dizini bir veya daha çok belge tersine.Bu, diskte veya bellekte tamamen olabilir.Çok sayıda sorgu istatistiklerini eşleşmeyi oluştuğu göreli olarak tek tek dizin var.

  • Tam metin Kataloğu
    Ara dizinler topluluğu sorguları için bir varlık olarak kabul edilir.Kataloglar tarafından görülebilen bir kuruluş birimi olan SQL Server Yönetici.

  • Word, simge veya öğe
    Tam metin altyapısında eşleşen birim.Belgelerden metnin akışı sözcükleri veya simgeleri dile özgü sözcük ayırıcılar tokenized.

  • Oluşumu
    Sözcük kaydırma sözcük ayırıcısı belirlenen bir belge özellik.Ilk sözcükten oluştuğunda 1, sonraki 2 vb. adresindeki var.Tümce ve yakınlık sorgularda yanlış pozitif durumlar önlemek için daha büyük bir oluşumu boşluklar cümle sonu ve paragraf sonu seçeneğini sunar.

  • TermFrequency
    Anahtar değeri zamanları sayı bir satırda oluşur.

  • IndexedRowCount
    Toplam satır sayısını dizin.Bu, ara dizinlerde saklanır sayımları göre hesaplanır.Bu numara, doğruluk değişebilir.

  • KeyRowCount
    tam metin kataloğu belirli bir anahtar içeren satır sayısı.

  • MaxOccurrence
    En büyük oluşumu satırda verilen bir özellik için bir tam metin kataloğu depolanır.

  • MaxQueryRank
    En yüksek rütbe, 1000, tam metin motoru tarafından döndürüldü.

Rütbe hesaplaması sorunlar

Işlem sırası, bilgisayar bir etkene bağlıdır.Farklı bir dil için sözcük ayırıcılarını, metni farklı tokenize.Örneğin, "köpek-evdeki" dize "Ev köpek" ve "köpek" "Ev" bir sözcük ayırıcısı olarak diğer bozuk.Bunun anlamı ile eşleşen ve derecelendirmesi değişir belirtilirse, yalnızca sözcüklerin farklıdır, ancak bu nedenle belge uzunluğundadır dile göre.Belge uzunluğu fark tüm sorgular için derecelendirme etkileyebilir.

Gibi istatistikleri IndexRowCount yaygın olarak değişebilir. Örneğin, ana dizin belgeleri için ranks ile katalog 2 milyar satır ana dizinde, sonra yeni bir belge ara bellek içi dizin dizine alınır ve bellek içi dizinindeki belgelerin sayısını temel alan belge için ranks eğriltilmiş karşılaştırılır.Bu nedenle, dizinler, çok sayıda satır içinde herhangi bir popülasyon dizine veya re-indexed sonra ALTER FULLTEXT KATALOĞU kullanarak bir ana dizini birleştirilmek önerilir...YENİDEN DÜZENLEME Transact-SQL deyim. Tam metin alt yapısı sayısını ve boyutunu ara dizinleri gibi parametreleri temel alan dizinler otomatik olarak birleştirme.

MaxOccurrence değerleri, 32 Aralık 1 ile normalleştirilmiş.Bunun anlamı, örneğin, 50 belge uzun sözcükleri olan bir Belge 100 sözcük olarak uzun aynı kabul edilir.Aşağıda normalleştirme için kullanılan tablodur.Because the document lengths are in the range between adjacent table values 32 and 128, they are effectively treated as having the same length, 128 (32 < docLength <= 128).

{ 16, 32, 128, 256, 512, 725, 1024, 1450, 2048, 2896, 4096, 5792, 8192, 11585, 
16384, 23170, 28000, 32768, 39554, 46340, 55938, 65536, 92681, 131072, 185363, 
262144, 370727, 524288, 741455, 1048576, 2097152, 4194304 };

CONTAINSTABLE derecelendirmesi

containstable derecelendirmesini aşağıdaki algoritmayı kullanır:

StatisticalWeight = Log2( ( 2 + IndexedRowCount ) / KeyRowCount )
Rank = min( MaxQueryRank, HitCount * 16 * StatisticalWeight / MaxOccurrence )

Tümcecik eşleşen yalnızca tek tek anahtarları gibi derecelendirilir dışında KeyRowCount (tümceciğini içeren satır sayısı) tahmin ve yanlış ve gerçek sayı daha yüksek olabilir.

ISABOUT derecelendirmesi

Ağırlıklı koşulları ISABOUT seçeneğini kullanarak sorgulama CONTAINSTABLE destekler.ISABOUT geleneksel bilgi alma terminoloji, vektör-alan sorgudur.Kullanılan algoritma derecelendirmesi Jaccard, yaygın olarak bilinen bir formülün varsayılandır.Derecelendirmesi sorgudaki her terim için hesaplanan ve sonra da aşağıda açıklandığı gibi birleştirilmiş.

ContainsRank = same formula used for CONTAINSTABLE ranking of a single term (above).
Weight = the weight specified in the query for each term. Default weight is 1.
WeightedSum = Σ[key=1 to n] ContainsRankKey * WeightKey
Rank =  ( MaxQueryRank * WeightedSum ) / ( ( Σ[key=1 to n] ContainsRankKey^2 ) 
      + ( Σ[key=1 to n] WeightKey^2 ) - ( WeightedSum ) )

FREETEXTTABLE derecelendirmesi

freetexttable derecelendirmesi OKAPI BM25 derecelendirmesini formüle dayanır.FREETEXTTABLE sorgularını inflectional oluşturma (özgün sorgu sözcükleri Çeşitlemeli formlar) aracılığıyla sorgu sözcükleri ekler; bu sözcüklerin ayrı sözcükler, bunlar oluşturulan sözcükleri özel bir ilişkisi olarak kabul edilir.Sözlük özelliği oluşturulan eşanlamlıları ayrı, eşit ağırlıklı koşulları kabul edilir.Sorgudaki her sözcük için rütbe katkıda bulunmaktadır.

Rank = Σ[Terms in Query] w ( ( ( k1 + 1 ) tf ) / ( K + tf ) ) * ( ( k3 + 1 ) qtf / ( k3 + qtf ) ) )
Where: 
w is the Robertson-Sparck Jones weight. 
In simplified form, w is defined as: 
w = log10 ( ( ( r + 0.5 ) * ( N – R + r + 0.5 ) ) / ( ( R – r + 0.5 ) * ( n – r + 0.5 ) )
N is the number of indexed rows for the property being queried. 
n is the number of rows containing the word. 
K is ( k1 * ( ( 1 – b ) + ( b * dl / avdl ) ) ). 
dl is the property length, in word occurrences. 
avdl is the average length of the property being queried, in word occurrences. 
k1, b, and k3 are the constants 1.2, 0.75, and 8.0, respectively. 
tf is the frequency of the word in the queried property in a specific row. 
qtf is the frequency of the term in the query.