Getting Started with Full-Text Search

Bazy danych SQL Server są pełnego tekstu, domyślnie włączona. Jednak aby używać indeksu pełnotekstowego w tabela, należy zdefiniować możliwości indeksowania pełnotekstowego w kolumnach tabel, które chcesz uzyskać dostęp za pomocą aparatu Full-Text.

Obejmuje to następujące podstawowe kroki:

  1. Utwórz wykaz pełnotekstowy do przechowywania indeksy pełnotekstowe.

    Każdy indeks pełnotekstowy, trzeba należeć do wykaz pełnotekstowy.Można utworzyć katalogu oddzielne tekstu dla każdego indeksu całego tekstu lub wielu indeksy pełnotekstowe można skojarzyć z danym katalogu.

    Uwaga

    Począwszy od SQL Server 2008, katalog pełnego tekstu jest obiektem wirtualne i nie należy do żadnych grupa plików. wykaz pełnotekstowy jest logiczne pojęcia, które odnosi się do grupy indeksy pełnotekstowe.

  2. Tworzenie indeksu całego tekstu na tabela lub widok indeksowany.

    Indeks pełnotekstowy jest specjalnym typem podstawie tokenu funkcjonalności indeksu, który jest wbudowany i utrzymywane przez aparat Full-Text.Aby utworzyć przeszukiwanie pełnego tekstu na tabela lub widok, musi on mieć indeks unikatowy, jedną kolumną, nie jest pustych.Aparat Full-Text wymaga tego indeks unikatowy, do mapowania każdy wiersz w tabela unikatowy klucz Kompresowalne.Można dołączyć do indeksu całego tekstu char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, a varbinary(max) kolumny. Aby uzyskać więcej informacji zobaczFull-Text Indexing Overview.

Przed szkoleniowe dotyczące tworzenia indeksy pełnotekstowe, ważne jest wziąć pod uwagę, w jaki sposób różnią się od zwykłych SQL Server indeksy. Poniższa tabela zawiera listę różnic.

Indeksy pełnotekstowe

Regularne indeksami programu SQL Server

Tylko jeden indeks pełnotekstowy tabela.

Kilka regularnych indeksów tabela.

Dodawanie danych do indeksy pełnotekstowe o nazwie zapełnianie, może wystąpić za pośrednictwem zgodnie z harmonogramem lub specjalne żądanie lub mogła dokonywać się automatycznie z dodaniem nowych danych.

Aktualizowane automatycznie, gdy umieszczone dane, na których są oparte zaktualizowany lub usunięty.

Pogrupowane w obrębie tej samej bazy danych w jeden lub więcej katalogów pełnego tekstu.

Nie są zgrupowane.

Uwagi dotyczące podczas tworzenia indeksu Full-Text

W tej sekcji omówiono następujące czynności:

  • Wybieranie języka kolumna

  • Wybieranie grupa plików w do indeksu całego tekstu

  • Indeks całego tekstu w celu przypisywania wykaz pełnotekstowy

  • Kojarzenie stoplist z indeksu całego tekstu

  • Aktualizowanie indeksu całego tekstu

Wybieranie języka kolumna

Aby uzyskać informacje na temat czynności, które należy wziąć pod uwagę przy są wybór języka kolumna Zobacz Best Practices for Choosing a Language When Creating a Full-Text Index.

Wybieranie grupa plików indeksu Full-Text

Proces tworzenia indeksu pełnotekstowego jest dość intensywne we/wy (na wysokim poziomie, składa się z odczytywania danych z SQL Servera następnie propagowania filtrowanych danych do indeksu całego tekstu). Zgodnie z zaleceniami dotyczącymi zlokalizować indeksu pełnotekstowego w grupa plików bazy danych, która jest najbardziej przydatna w przypadku maksymalizacja wydajności We/Wy lub zlokalizuj indeksy pełnotekstowe w inną grupa plików w innym woluminie.

Gdy łatwość zarządzania ma duże znaczenie, zaleca się, aby przechowywać dane w tabela i wszelkie powiązane wykazów całego tekstu w tym samym grupa plików.Czasami ze względu na wydajność można uzyskać danych tabela i indeks pełnotekstowy w różnych filegroups, które są przechowywane na różnych woluminach zmaksymalizować proste We/Wy.

Przypisywanie indeksu pełny tekst, który ma wykaz pełnotekstowy

Ważne jest zaplanować rozmieszczenie indeksy pełnotekstowe dla tabel w katalogi pełnego tekstu.

Firma Microsoft zaleca skojarzenie tabele z tej samej właściwości aktualizacji (takie jak niewielka liczba zmian w stosunku do dużej liczby zmian lub tabele, które zmieniają się często w określonej porze dnia) ze sobą w ten sam wykaz pełnotekstowy.Konfigurując wykaz pełnotekstowy zapełnianie harmonogramy, indeksy pełnotekstowe pozostają synchronicznie z tabelami bez niekorzystnego wpływu na wykorzystanie zasób przez serwer bazy danych w okresach aktywności wysokiej bazy danych.

Po przypisaniu tabela do katalogu pełnego tekstu, należy wziąć pod uwagę następujące wskazówki:

  • Zawsze należy wybrać najmniejszy dostępne dla unikatowy klucz pełnego tekstu indeks unikatowy.(4-Bajtowe, oparte na liczbę całkowitą indeksu jest optymalne). Zmniejsza to zasoby wymagane przez Microsoft Znacznie wyszukiwania usługa w systemie plików. Jeśli klucz podstawowy jest duża (ponad 100 bajtów), należy rozważyć, wybierając inny indeks unikatowy w tabela (lub tworzenie innego indeks unikatowy) jako unikatowy klucz pełnego tekstu.W przeciwnym razie jeśli rozmiar klucz unikatowego pełnego tekstu przekracza maksymalny rozmiar dozwolony (900 bajtów), zapełnianie pełnego tekstu nie będzie mógł kontynuować.

  • tabela, która ma milionów wierszy są indeksowanie, przypisać tabela swój własny wykaz pełnotekstowy.

  • Należy wziąć pod uwagę ilość zmiany zachodzące w tabelach, przy czym pełnego tekstu indeksowane, jak również całkowitą liczbę wierszy.Całkowita liczba wierszy, które są zmieniane wraz z numerami wierszy w tabela obecne podczas ostatniego zapełnianie pełnego tekstu, reprezentują milionów wierszy, przypisać tabela swój własny wykaz pełnotekstowy.

Kojarzenie Stoplist z indeksu tekstowego pełny dupleks

SQL Server 2008 wprowadzono stoplists.A stoplist znajduje się lista stopwords, znane również jako słowa ignorowane.A stoplist jest skojarzony z każdym indeks pełnotekstowy, a wyrazy w tym stoplist są stosowane do całego tekstu kwerendy dla tego indeksu.Domyślnie stoplist systemu jest skojarzony z nowego indeksu pełnotekstowego.Można jednak tworzyć i zamiast niego Użyj własnego stoplist.Aby uzyskać więcej informacji zobaczStopwords and Stoplists.

For example, the following CREATE FULLTEXT STOPLISTTransact-SQL statement creates a new full-text stoplist named myStoplist3 by copying from the system stoplist:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO

The following ALTER FULLTEXT STOPLISTTransact-SQL statement alters a stoplist named myStoplist, adding the word 'en', first for Spanish and then for French:

ALTER FULLTEXT STOPLIST MyStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST MyStoplist ADD 'en' LANGUAGE 'French';
GO

Aktualizowanie indeksu Full-Text

Podobnie jak regularne SQL Server indeksy pełnotekstowe indeksy mogą być automatycznie aktualizowane zgodnie z modyfikacji danych w tabelach skojarzone. Jest to zachowanie domyślne.Alternatywnie można zachować swoje indeksy pełnotekstowe aktualne ręcznie lub w określonych odstępach czasu według harmonogramu.Podczas wypełniania indeks pełnotekstowy może być czasochłonne i dużej ilości zasób, dlatego aktualizowania indeksu jest zwykle wykonywane asynchronicznego procesu, który działa w tle i utrzymuje aktualności indeksu pełnotekstowego po modyfikacji w tabela bazowa.Aktualizowanie indeksu pełnotekstowego, natychmiast po każdej zmianie w tabela bazowa może znacznie obciążać zasób.W związku z tym jeśli masz bardzo duża szybkość aktualizacji/insert, delete, mogą wystąpić niektóre pogorszenie wydajności kwerendy.W takim przypadku należy wziąć pod uwagę planowania ręcznych zmian aktualizacje nadążać za wiele zmian od czas do czas, a nie konkurowanie z kwerendy dla zasobów.

Aby monitorować stan zapełnianie, należy użyć funkcji FULLTEXTCATALOGPROPERTY albo OBJECTPROPERTYEX.Pobrać stanu zapełnianie wykazu, uruchom następującą instrukcję:

SELECT FULLTEXTCATALOGPROPERTY('AdvWksDocFTCat', 'Populatestatus');

Zazwyczaj w przypadku pełnego zapełnianie w toku, wynik zwracany jest 1.

Przykład: Definiowanie wyszukiwanie w AdventureWorks (języka Transact-SQL)

Poniższy przykład dwóch części wykaz pełnotekstowy nazwane AdvWksDocFTCat na AdventureWorks bazy danych, a następnie tworzy indeks pełnotekstowy na Document Tabela w AdventureWorks. Ta instrukcja tworzy wykaz pełnotekstowy w domyślnym katalogu określony podczas instalacji.Folder o nazwie AdvWksDocFTCat znajduje się w katalogu domyślnym.

  1. Aby utworzyć wykaz pełnotekstowy o nazwie AdvWksDocFTCat, w przykładzie użyto UTWÓRZ WYKAZ WIĘCEJ instrukcja:

    USE AdventureWorks;
    GO
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;
    
  2. Przed przystąpieniem do tworzenia indeksu pełnotekstowego w tabeli dokumentu, należy się upewnić, że tabela ma indeks unikatowy, jedną kolumną, nie jest pustych.Poniżej TWORZENIE INDEKSU instrukcja tworzy indeks unikatowy ui_ukDoc, kolumna DocumentID Dokument tabela:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
    
  3. Po utworzeniu klucz unikatowego indeksu pełnotekstowego można tworzyć na Document tabela za pomocą następujących UTWÓRZ INDEKS WIĘCEJ instrukcja.

    CREATE FULLTEXT INDEX ON Production.Document
    (
        Document                         --Full-text index column name 
            TYPE COLUMN FileExtension    --Name of column that contains file type information
            Language 2057                 --2057 is the LCID for British English
    )
    KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index
    WITH CHANGE_TRACKING AUTO            --Population type;
    GO
    

    kolumna typ określony w tym przykładzie określa typ kolumna w tabela, która zawiera typ dokumentu, w każdym wierszu kolumna "Dokument" (co jest typ binarny).kolumna Typ są przechowywane przez inne rozszerzenie — "doc", "xls" i tak dalej — dokumentu w danym wierszu.Aparat Full-Text wykorzystuje rozszerzenie pliku w danym wierszu wywoływanie prawidłowy filtr, aby użyć w celu analizowania danych w tym wierszu.Po filtr zawiera dane binarne wiersza określonego dzielącego będzie analizować zawartość (w tym przykładzie jest używany dla angielskiego dzielącego).Należy zauważyć, że filtrowanie proces odbywa się tylko na indeksowanie czas lub jeśli użytkownik wstawia lub aktualizuje kolumna w tabela bazowa podczas śledzenia zmian automatyczne jest włączona dla indeksu pełnotekstowego.Aby uzyskać więcej informacji zobaczFiltry wyszukiwanie pełnego tekstu.

Aby przejrzeć informacje o indeksie pełnego tekstu

Wykaz lub dynamiczny widok zarządzania

Description

sys.fulltext_index_catalog_usages (Transact-SQL)

Zwraca dla każdego wykazu pełnotekstowego wiersz do odwołania do indeksu pełnotekstowego.

sys.fulltext_index_columns (Transact-SQL)

Zawiera wiersz dla każdej kolumny wchodzącej w skład indeksu pełnotekstowego.

sys.fulltext_index_fragments (Transact-SQL)

Indeks więcej używa wewnętrznego tabel o nazwie fragmenty indeks pełnotekstowy do przechowywania danych odwróconą indeksu.Uprawnienia poziom bazy danych są przyznawane w ramach określonej bazy danych.Jeśli użytkownik potrzebuje uprawnień do obiektów znajdujących się w innej bazie danych, Utwórz konto użytkownika w innej bazie danych, lub udzielić dostępu konta użytkownika do drugiej bazy danych, a także w bieżącej bazie danych.

sys.fulltext_indexes (Transact-SQL)

Zawiera wiersz na indeks pełnotekstowy tabelarycznych obiektu.

sys.dm_fts_index_keywords (Transact-SQL)

Zwraca informacje o zawartości indeks pełnotekstowy dla określonej tabela.

sys.dm_fts_index_keywords_by_document (Transact-SQL)

Zwraca informacje o zawartości poziomie dokumentu indeks pełnotekstowy dla określonej tabela.Danego słowa kluczowego mogą pojawiać się w kilku dokumentów.

sys.dm_fts_index_population (języka Transact-SQL)

Zwraca informacje dotyczące populacji indeks pełnotekstowy aktualnie w toku.