Jak wyniki kwerendy wyszukiwania są uporządkowane (wyszukiwanie pełnotekstowe)
Wyszukiwanie pełnotekstowe w SQL Server można generować opcjonalny wynik (lub wartość rangi) oznacza przydatność danych zwróconych przez zapytanie pełnotekstowe.Wartość ta pozycja jest obliczana w każdym wierszu i może służyć jako kryteria sortowania do sortowania zestaw wyników danej kwerendy według istotności.Wartości rangi wskazują względna kolejność przydatności wierszy zestaw wyników.Wartości rzeczywiste nie są ważne i zazwyczaj różnią się w każdym czas kwerenda jest uruchamiana. Wartość rangi nie posiada żadnego istotność w kwerendach.
Ostrzeżenie
Informacje dotyczące ograniczania środkowa zbiory zwracanie tylko najbardziej odpowiednich wyniki, zobacz Ograniczanie środkowa zestawów wyników (wyszukiwanie pełnotekstowe).
Statystyki dla klasyfikacji
Podczas tworzenia indeksu statystyki są zbierane do użycia w rankingu.W strukturze jeden indeks nie powoduje bezpośrednio proces budowania wykaz pełnotekstowy.Zamiast tego aparat pełnego tekstu dla SQL Server tworzy indeksy pośrednie jako indeksowanego danych.Aparat pełnotekstowe następnie scala te indeksy większych indeksu, w razie potrzeby.Ten proces może się powtarzać.Aparat pełnotekstowe przeprowadza następnie "scalanie wzorca" łączącą wszystkie pośrednie indeksów w jeden duży indeks główny.
Statystyki są gromadzone w każdym indeksie pośrednich poziom.Statystyki są scalane, gdy indeksy są scalane.Niektóre wartości statystyczne mogą być generowane tylko podczas procesu scalanie wzorca.
Podczas klasyfikacji zestaw wyników kwerendy SQL Server używa statystyk z największą indeks pośrednich.Zależy to czy indeksy pośrednie zostały scalone lub nie.W wyniku klasyfikacji statystyki mogą się różnić w dokładności jeśli indeksy pośrednie nie został scalony.To wyjaśnia, dlaczego tej samej kwerendzie może zwracać różne wyniki rangi czas dodane, zmodyfikowane i usunięte dane indeksowane pełnego tekstu i mniejsze indeksy są scalane.
Aby zminimalizować rozmiar indeksu i złożoności obliczeniowej, często są zaokrąglane statystyki.
Poniższa lista zawiera niektóre powszechnie używane terminy i statystycznych wartości, które są istotne przy obliczaniu rangi.
Właściwość
kolumna indeksowanej pełnego tekstu wiersza.Dokument
obiekt Jest zwracane w kwerendach.W SQL Server odpowiada wiersz.Dokument może posiadać wiele właściwości, podobnie jak wiersz może zawierać wiele kolumn indeksowanych pełnego tekstu.Indeks
Pojedyncza odwrócony indeksu jednego lub więcej dokumentów.Może to być całkowicie w pamięci lub na dysku.Wiele statystyki kwerendy są względem konkretnego indeksu, gdzie wystąpił dopasowanie.Katalog pełnotekstowy
Kolekcja indeksów pośrednie są traktowane jako jeden obiekt kwerend.Wykazy są jednostki organizacji widoczne dla SQL Server administratora.Program Word tokenu lub element
Jednostka dopasowywania w aparacie pełnego tekstu.Strumienie tekst z dokumentów są tokenized do słów lub tokeny przez moduły dzielenia wyrazów dla określonego języka.Wystąpienie
Przesunięcie word we właściwość dokumentu, ustalone przez dzielenie wyrazów.Pierwszy wyraz jest przy wystąpieniu 1, następny 2 i tak dalej.W celu uniknięcia fałszywie w kwerendach frazę i bliskości, koniec zdania i końca akapitu wprowadzenie większej wystąpienia przerw.TermFrequency
Liczba razy wartość klucz występuje w wierszu.IndexedRowCount
Całkowita liczba wierszy indeksowane.To jest obliczana, oparte na zlicza utrzymywane w indeksach pośrednich.Ta liczba może się różnić w dokładności.KeyRowCount
Całkowita liczba wierszy w wykaz pełnotekstowy zawierających dany klucz.MaxOccurrence
Największy wystąpienie przechowywane w wykaz pełnotekstowy dla danej właściwość w wierszu.MaxQueryRank
Maksymalna ranga, 1000, zwracane przez aparat pełnego tekstu.
Problemy z obliczeń rangi
Proces przetwarzania danych ranga, zależy od wielu czynników.Moduły dzielenia wyrazów w innym języku inaczej tokenize tekstu.Na przykład ciąg "dog house" można podzielić na "dog" "dom" przez jednego dzielącego i do "dog house" przez inny.Oznacza to, że dopasowywania i klasyfikacja zależą na podstawie języka określony, ponieważ nie tylko są różne słowa, ale tak jest długość dokumentu.Różnica długości dokumentu mogą mieć wpływ na klasyfikację dla wszystkich kwerend.
Statystyki, takie jak IndexRowCount może znacznie się różnią.Na przykład, jeśli katalog zawiera 2 miliard wiersze indeks główny, a następnie jeden nowy dokument jest indeksowany do indeksu pośrednie w pamięci i rangę dla tego dokumentu, na podstawie liczby dokumenty w indeksie w pamięci może być skośny w porównaniu z rangę dokumenty z indeksu głównego.Z tego powodu zaleca po jakiejkolwiek zapełnianie, wyniki w dużej liczby wierszy są indeksowane lub re-indexed scalić indeksy w indeks główny katalog PEŁNOTEKSTOWY zmieniać używając...REORGANIZOWANIE Transact-SQL instrukcja.Silnika pełnego tekstu zostanie również automatycznie scalić indeksy, na podstawie parametrów, takich jak liczba i rozmiar indeksów pośrednich.
MaxOccurrence wartości są znormalizowane do 1 32 zakresów.Oznacza to, na przykład długich wyrazów dokumentu 50 jest potraktowany jako wyrazy w dokumencie 100 długa.Poniżej znajduje się w tabela stosowanej do normalizacji.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 };
Klasyfikacja z CONTAINSTABLE
CONTAINSTABLE klasyfikacji używa następującego algorytmu:
StatisticalWeight = Log2( ( 2 + IndexedRowCount ) / KeyRowCount )
Rank = min( MaxQueryRank, HitCount * 16 * StatisticalWeight / MaxOccurrence )
Dopasowuje frazę są klasyfikowane tak samo, jak poszczególne klucze z wyjątkiem KeyRowCount (liczba wierszy zawierających frazę) szacuje się i mogą być niedokładne i wyższe niż rzeczywista liczba.
Klasyfikacja z ISABOUT
CONTAINSTABLE obsługuje badanie warunków ważone przy użyciu opcji ISABOUT.ISABOUT jest kwerendy wektorowej w terminologii tradycyjnych pobierania informacji.Domyślnie, klasyfikacja algorytm używany jest Jaccard, powszechnie znanego wzoru.Klasyfikację obliczona dla każdego terminu w kwerendzie, a następnie połączone, jak opisano poniżej.
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 ) )
Klasyfikacja z FREETEXTTABLE
FREETEXTTABLE Klasyfikacja jest oparta na formuły klasyfikacji OKAPI BM25.FREETEXTTABLE kwerendy będzie dodawać wyrazy do kwerendy za pośrednictwem słowa ignorowanego generacji (formularze wynikającymi oryginalne słowa kwerendy); wyrazy te są traktowane jako oddzielne wyrazy z żadnej specjalnej relacji z wyrazów, z których zostały wygenerowane.Synonimy wygenerowana przez funkcję tezaurusa są traktowane jako osobne, jednakowo ważonej warunków.Każdy wyraz w kwerendzie przyczynia się do rangi.
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.