Udostępnij przez


Ograniczanie środkowa zestawów wyników (wyszukiwanie pełnotekstowe)

CONTAINSTABLE i FREETEXTTABLE zwracają kolumna o nazwie RANGA, zawierającą wartości porządkowej od 0 do 1000 (pozycja wartości).Wartości te są używane do rangi wierszy zwracanych zgodnie z jak spełniające kryteria selekcji.Wartości rangi wskazują względna kolejność przydatności wierszy zestaw wyników z niższą wartość wskazującą znaczenie dolnym.Wartości rzeczywiste nie są ważne i zazwyczaj różnią się w każdym czas kwerenda jest uruchamiana.

Ostrzeżenie

Predykaty ZAWIERA i FREETEXT zwraca wartości rangi.

Liczba elementów spełniających warunek wyszukiwania jest często bardzo duże.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.Jeśli top_n_by_rank jest połączone z innymi parametrami, kwerenda może zwracać mniej wierszy niż liczba wierszy spełniających faktycznie wszystkich predykatów.

SQL Server zamówienia dopasowania przez Ranga i zwraca do określonej liczby wierszy.Ten wybór może powodować gwałtowny wzrost wydajności.Na przykład kwerendy, która zwróci normalnie 100 000 wierszy z tabela jednego miliona wierszy są przetwarzane szybciej, jeśli tylko wymagane są top 100 wierszy.

Ostrzeżenie

Aby uzyskać informacje o przeszukiwanie pełnego tekstu generuje rangi wartości, zobacz Jak wyniki kwerendy wyszukiwania są uporządkowane (wyszukiwanie pełnotekstowe).

Przykład

Przykład A: Wyszukiwanie tylko trzech najlepszych dopasowań

W poniższym przykładzie użyto CONTAINSTABLE zwraca tylko trzech najlepszych dopasowań.

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

Oto zestaw wyników.

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     

Przykład B: Wyszukiwanie najlepszych dopasowań dziesięciu

W poniższym przykładzie użyto CONTAINSTABLE zwraca opis i kategoria Nazwa kategorii żywności 10 pierwszych gdzie Description Kolumna zawiera wyrazy "słodkie i savory" blisko wyrazu "sosy" lub wyraz "candies".

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

W tej sekcji