Ranked sonuç kümesi (tam metin araması) sınırlama
The CONTAINSTABLE and FREETEXTTABLE functions return a sütun named RANK that contains ordinal values from 0 through 1000 (rank values).Bu değerler, seçim ölçütü ne kadar iyi eşleşen göre döndürülen satırları derecelendirmek için kullanılır.Rütbe değerleri, alt uygunluğu gösteren için daha düşük bir değer 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ı.
Not
IÇERIR ve FREETEXT yüklemler rütbe herhangi bir değer döndürmüyor.
Bir arama koşulu eşleşen öğeler genellikle büyük sayısıdır.To prevent CONTAINSTABLE or FREETEXTTABLE queries from returning too many matches, use the optional top_n_by_rank parameter, which returns only a subset of rows.top_n_by_rank is an integer value, n, that specifies that only the n highest ranked matches are to be returned, in descending order.If top_n_by_rank birleştirilir diğer parametreleri, sorgu tüm koşullarına uyan satır sayısından daha az satır dönmek.
SQL Server eşleri tarafından rütbe siparişleri ve yalnızca belirtilen satır sayısı kadar verir.Bu seçenek, çarpıcı bir artış oluşabilir.Örneğin, sorguda normal olarak, bir milyon satır bir tablodan 100.000 satır döndürür işlenir daha hızlı yalnızca üst 100 satır istenir.
Not
tam metin araması rütbe değerleri oluşturur hakkında bilgi için bkz: Arama sorgu sonuçlar (tam metin araması) nasıl derecelendirilir.
Örnek
Örnek A: Yalnızca üst için arama üç eşleşiyor
Aşağıdaki örnekte, yalnızca üst üç eşleşen döndürülecek CONTAINSTABLE kullanır.
USE Northwind;
GO
SELECT K.RANK, CompanyName, ContactName, Address
FROM Customers AS C
INNER JOIN
CONTAINSTABLE(Customers,Address, 'ISABOUT ("des*",
Rue WEIGHT(0.5),
Bouchers WEIGHT(0.9))', 3) AS K
ON C.CustomerID = K.[KEY];
GO
Here is the result set.
RANK CompanyName ContactName address
---- ------------ ----------- -------
123 Bon app' Laurence Lebihan 12, rue des Bouchers
65 Du monde entier Janine Labrune 67, rue des Cinquante Otages
15 France restauration Carine Schmitt 54, rue Royale
Örnek B: Üst için arama on eşleşiyor
Aşağıdaki örnekte, ilk 10 yiyecek kategorileri açıklamasını ve kategori adını döndürmek için CONTAINSTABLE kullanır burada Descriptionsütun "sauces" sözcüğü veya sözcük "candies." "Lezzetli ve savory" sözcüklerini içerir.
SELECT FT_TBL.Description,
FT_TBL.CategoryName,
KEY_TBL.RANK
FROM Categories AS FT_TBL INNER JOIN
CONTAINSTABLE (Categories, Description,
'("sweet and savory" NEAR sauces) OR
("sweet and savory" NEAR candies)'
, 10
) AS KEY_TBL
ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO
Bu Bölümde
- Arama sorgu sonuçlar (tam metin araması) nasıl derecelendirilir
Açıklayan bir sorgu tarafından döndürülen sıra değerleri tam metin araması üretir nasıl sık dahil hüküm ve rütbe rütbe hesaplaması sorunları ve derecelendirmesi CONTAINSTABLE ve FREETEXTTABLE işlevlerini hesaplamak için önemli olan istatistik değerleri kullanılan sonuçlar.