Udostępnij za pośrednictwem


Struktury indeksu pełnotekstowego

Dobre zrozumienie struktury indeksu pełnotekstowego pomoże zrozumieć sposób działania silnika pełnego tekstu.W tym temacie używa następujących wyciąg z dokument tabela w Adventure Works jako przykład tabela. Ten fragment prezentuje tylko dwie kolumna DocumentID kolumna i Tytuł kolumna i trzy wiersze z tabela.

Na przykład przyjmiemy, że utworzono indeksu pełnotekstowego na Tytuł kolumna.

DocumentID

Tytuł

1

Crank ramię i konserwacja opona

2

Przednie światła odblaskowego nawiasu i zestawu odblaskowego 3

3

Przedni reflektor nawias instalacji

Na przykład, poniższa tabela przedstawia Fragment 1, przedstawia zawartość indeksu pełnotekstowego utworzone na Tytuł kolumna dokument tabeli.Indeksy pełnotekstowe zawierają więcej informacji niż przedstawione w tej tabela.Tabela jest logiczną reprezentacją indeksu pełnotekstowego i dostarczane wyłącznie w celach demonstracyjnych.Wiersze są przechowywane w formacie skompresowanym, aby zoptymalizować wykorzystanie dysku.

Należy zauważyć, że dane zostały odwrócony z oryginalnych dokumentów.Inwersja występuje, ponieważ słowa kluczowe są mapowane do dokumentu identyfikatorów.Indeks pełnotekstowy z tego powodu jest często określane jako indeks odwrócony.

Ponadto zauważyć, że słowo kluczowe "i" został usunięty z indeksu pełnotekstowego.Ponieważ to zrobić "i" jest stopword i usuwanie stopwords z indeksu pełnotekstowego może prowadzić do znacznych oszczędności miejsca, zwiększając wydajność kwerendy.Aby uzyskać więcej informacji o stopwords, zobacz Stopwords i Stoplists.

Fragment 1

Słowo kluczowe

ColId

DocId

Wystąpienie

Korba

1

1

1

Ramię

1

1

2

Opona

1

1

4

Konserwacja

1

1

5

Przednie

1

2

1

Przednie

1

3

1

Światło odblaskowe

1

2

2

Światło odblaskowe

1

2

5

Światło odblaskowe

1

3

2

Nawias kwadratowy

1

2

3

Nawias kwadratowy

1

3

3

Zestaw

1

2

6

3

1

2

7

Instalacja

1

3

4

Słowa kluczowego kolumna zawiera reprezentację jednego tokenu ekstrahowana przy indeksowania czas.Moduły dzielenia wyrazów określają, co sprawia, że token w górę.

ColId kolumna zawiera wartość, która odpowiada określonej kolumny, która jest indeksowana pełnego tekstu.

DocId kolumna zawiera wartości 8 bajtowa liczba całkowita, która mapuje do określonej wartości klucz pełnotekstowego w tabela indeksowanej pełnego tekstu.Mapowanie jest konieczne, gdy klucz pełnotekstowego nie jest danych typu Liczba całkowita.W takich przypadkach mapowania między pełnego tekstu klucz wartości i DocId w osobnej tabeli o nazwie tabela mapowania DocId zachowywane są wartości.Kwerendy dla tych mapowań sp_fulltext_keymappings systemowa procedura składowana.Spełnia warunek wyszukiwania DocId wartości z powyższej tabeli trzeba przyłączać z tabeli mapowania DocId do pobrania wierszy z tabela bazowa poszukiwanych.Jeśli wartość klucz pełnotekstowego z tabela bazowa jest całkowitą wartość bezpośrednio służy jako DocId i nie jest konieczne.Dlatego przy użyciu wartości klucz pełnotekstowego całkowitą pomagają optymalizować kwerend pełnego tekstu.

Wystąpienie kolumna zawiera wartość całkowitą.Dla każdego DocId wartość, istnieje lista wartości wystąpienia, które odpowiadają przesunięcia względem word określonego słowa kluczowego, w tym DocId.Wystąpienia wartości są użyteczne przy określaniu frazę lub bliskości odpowiedników, na przykład frazy mieć numerycznie sąsiadujących wystąpienia wartości.Są one również przydatne w computing przydatność wyników; na przykład liczba wystąpień słowo kluczowe w DocId może być używany w punktacji.

Fragmenty indeks pełnotekstowy

Logiczne indeksu pełnotekstowego jest zazwyczaj podzielić na wiele tabel wewnętrznego.Każda tabela wewnętrznych nazywa fragmentu indeksu pełnotekstowego.Niektóre z tych fragmentów może zawierać dane nowsze niż inne.Na przykład, jeśli aktualizacje użytkownika poniżej wierszy, których DocId 3 i tabela jest automatycznie śledzone zmiany, tworzony jest nowy fragment.

DocumentID

Tytuł

3

Tylne światło odblaskowe

W poniższym przykładzie przedstawiono Fragment 2, fragmentu zawiera nowsze dane o DocId 3, w porównaniu do fragmentu 1.W związku z tym, kiedy użytkownik kwerendy o "Tylne światło odblaskowe" dane z 2 fragmentu jest używany dla DocId 3.Każdy fragment jest oznaczone sygnatury czasowej utworzenia mogą być wyszukiwane przy użyciu sys.fulltext_index_fragments wykazu widoku.

Fragment 2

Słowo kluczowe

ColId

DocId

Occ

Tylne

1

3

1

Światło odblaskowe

1

3

2

Jak wynika z 2 fragmentu kwerend pełnego tekstu należy zbadać każdy fragment wewnętrznie i odrzucić starsze wpisy.Dlatego zbyt wiele fragmentów indeksu pełnotekstowego indeksu pełnotekstowego można prowadzić na znaczne pogorszenie wydajności kwerendy.To reduce the number of fragments, reorganize the fulltext catalog by using the REORGANIZE option of the ALTER FULLTEXT CATALOG Transact-SQL statement.Ta instrukcja wykonuje Scalanie wzorca, który scala pojedynczego fragmentu większe fragmenty i usuwa wszystkie nieaktualne wpisy z indeksu pełnotekstowego.

Po zmieniono ich organizację, indeks przykład zawiera następujące wiersze:

Słowo kluczowe

ColId

DocId

Occ

Korba

1

1

1

Ramię

1

1

2

Opona

1

1

4

Konserwacja

1

1

5

Przednie

1

2

1

Tylne

1

3

1

Światło odblaskowe

1

2

2

Światło odblaskowe

1

2

5

Światło odblaskowe

1

3

2

Nawias kwadratowy

1

2

3

Zestaw

1

2

6

3

1

2

7