Utwórz indeks PEŁNOTEKSTOWY (Transact-SQL)

Tworzy indeksu pełnotekstowego opartego na tabela lub indeksowany widok w bazie danych.Dozwolony jest tylko jeden indeks pełnotekstowy tabela lub indeksowany widoki każdego indeksu pełnotekstowego dotyczy pojedynczej tabela lub indeksowany widok.

Indeks pełnotekstowy może zawierać maksymalnie 1024 kolumn.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

CREATE FULLTEXT INDEX ON table_name
   [ ( { column_name 
             [ TYPE COLUMN type_column_name ]
             [ LANGUAGE language_term ] 
        } [ ,...n] 
      ) ]
    KEY INDEX index_name 
    [ ON <catalog_filegroup_option> ]
    [ WITH [ ( ] <with_option> [ ,...n] [ ) ] ]
[;]

<catalog_filegroup_option>::=
 {
    fulltext_catalog_name 
 | ( fulltext_catalog_name, FILEGROUP filegroup_name )
 | ( FILEGROUP filegroup_name, fulltext_catalog_name )
 | ( FILEGROUP filegroup_name )
 }

<with_option>::=
 {
   CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF [, NO POPULATION ] } 
 | STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
 }

Argumenty

  • table_name
    Jest nazwą tabela lub indeksowany widok , który zawiera kolumna lub kolumny indeksu pełnotekstowego.

  • column_name
    Nazwa kolumna jest dołączona indeksu pełnotekstowego.Only columns of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, and varbinary(max) can be indexed for przeszukiwanie pełnego tekstu.Aby określić wiele kolumn, należy powtórzyć column_name klauzula w następujący sposób:

    Utwórz na indeks PEŁNOTEKSTOWY table_name (column_name1 ) […], column_name2 […]) …

  • KOLUMNA TYPtype_column_name
    Określa nazwękolumnaz tabela, type_column_name, to jest używane do przechowywania typu dokumentu dla varbinary, varbinary(max), lub image dokumentu. W tej kolumna, znany jako typ kolumnazawiera rozszerzenie pliku dostarczone przez użytkownika (doc, PDF, xls itd.).Typ kolumna musi być typu char, nchar, varchar, lub nvarchar.

    Określ kolumnę typu type_column_name tylko wtedy, gdy column_name Określa varbinary, varbinary(max) lub image kolumna, w której dane są przechowywane jako dane binarne; w przeciwnym razie SQL Server zwraca błąd.

    Ostrzeżenie

    Na indeksowanie czas, pełnego tekstu aparat używa skrót w kolumna typ każdego wiersza tabela do identyfikacji, które przeszukiwanie pełnego tekstu filtru dla dokumentu w column_name.Filtr ładowany dokument jako strumień binarny, usuwa informacje o formatowaniu i wysyła tekst z dokumentu do składnika dzielenie wyrazów.Aby uzyskać więcej informacji, zobacz Filtry wyszukiwania pełnotekstowego.

  • JĘZYKlanguage_term
    Jest językiem dane przechowywane w column_name.

    language_termjest opcjonalny i może być określony jako ciąg, liczba całkowita lub wartość szesnastkową odpowiadającą identyfikator ustawienia regionalne (LCID) języka.Jeśli wartość nie zostanie określona, język domyślny SQL Serverużywanawystąpienie .

    Jeśli language_term określono język, którego on reprezentuje, które będą używane do indeksu, który dane przechowywane w char, nchar, varchar, nvarchar, text, i ntext kolumny.Język ten jest język domyślny używany w kwerendzie czas , jeśli language_term nie jest określony jako część predykat pełnego tekstu wobec kolumna.

    Gdy określona jako ciąg language_term odpowiada aliaswartośćkolumna w syslanguagestabela systemowa. ciąg musi być ujęty w znaki pojedynczego cudzysłowu, tak jak w 'language_term".Gdy określona jako liczba całkowita, language_term jest rzeczywisty identyfikator LCID identyfikujący język.Gdy określona jako wartość szesnastkową language_term 0 x, a po nim szesnastkowe wartości LCID.Wartość szesnastkowa nie może przekraczać ośmiu cyfr, łącznie z zerami na początku.

    Jeśli wartość jest w formacie zestaw znaków dwubajtowych (zestaw znaków dwubajtowych), SQL Server przekonwertuje go do kodu Unicode.

    Zasoby, takie jak moduły dzielenia wyrazów i programy szukające rdzeni, musi być włączony dla języka, określony jako language_term.Jeśli takie zasoby nie obsługuje określonego języka SQL Server zwraca błąd.

    Użycie sp_configure procedura składowana dostęp do informacji o domyślny język pełnego tekstu Microsoft SQL Server wystąpienie.Aby uzyskać więcej informacji, zobacz sp_configure (języka Transact-SQL) i domyślny język pełnego tekstu, opcja.

    Obiektu BLOB i -XML kolumny zawierające dane tekstowe w wielu językach lub w przypadkach, gdy język tekstu przechowywanego w kolumna jest nieznany mogą być właściwe dla użycia neutralne języka (0x0) zasób.Jednakże najpierw należy przeanalizować ewentualne konsekwencje przy użyciu języka neutralnej (0x0) zasób.Dla informacji na temat możliwych rozwiązań i konsekwencje przy użyciu języka (0x0) neutralne zasób, zobacz Najważniejsze wskazówki dotyczące Wybieranie języka podczas tworzenia indeksu pełnotekstowego.

    W przypadku dokumentów przechowywanych w kolumnach typu BLOB lub XML standard kodowania w dokumencie będą używane w czasindeksowania.Na przykład, w kolumnach XML xml:lang atrybut w dokumentach XML będzie identyfikować języka.W kwerendzie czaswartość określonych uprzednio w language_term staje się język domyślny używane w kwerendach pełnego tekstu, chyba że language_term jest określony jako część zapytanie pełnotekstowe.

  • INDEKS KLUCZAindex_name
    Jest to nazwa indeksu unikatowego klucz na table_name.Indeks klucza musi być unikatowy, jedno -klucz, kolumnanie dopuszczającej wartości null.Wybierz najmniejszy indeks unikatowy klucz unikatowy kluczpełnego tekstu.Aby uzyskać najlepszą wydajność, zaleca się danych typu Liczba całkowita dla pełnego tekstu klucz.

  • fulltext_catalog_name
    wykaz pełnotekstowy jest używany do indeksu pełnotekstowego.Katalog musi już istnieć w bazie danych.Ta klauzula jest opcjonalne.Jeśli nie zostanie określona, używana jest wykaz domyślny.Jeśli istnieje wykaz domyślny nie SQL Server zwraca błąd.

  • GRUPA PLIKÓWfilegroup_name
    Tworzy określonego indeksu pełnotekstowego w określonej grupa plików.grupa plików musi już istnieć.Jeśli nie zostanie określona grupa plików klauzula , indeks pełnotekstowy znajduje się w tej samej grupa plików jako tabela bazowa lub widoku nonpartitioned tabela lub podstawowa grupa plików tabela partycjonowana.

  • CHANGE_TRACKING = {PODRĘCZNIKA | AUTO | WYŁĄCZANIE , nie populacji]}
    Określa, czy zmiany (aktualizacje, usuwa lub wstawia) kolumny tabela , które są objęte indeksu pełnotekstowego będzie propagowane przez SQL Server do indeksu pełnotekstowego.Zmiany danych poprzez WRITETEXT i UPDATETEXT nie są uwzględniane w indeksie pełnego tekstu i nie są zabierani z śledzenia zmian.

    • RĘCZNE
      Określa, że prześledzone zmiany musi ręcznie propagowane przez wywołanie indeks PEŁNOTEKSTOWY ALTER … Rozpocznij AKTUALIZACJĘ populacji Transact-SQL instrukcja (Ręczne zapełnianie).Można użyć SQL Server to agenta Transact-SQL instrukcja okresowe.

    • AUTOMATYCZNE
      Określa, że prześledzone zmiany będą przekazywane automatycznie zmienione dane w tabela bazowa (automatyczne zapełnianie).Mimo, że zmiany są propagowane automatycznie, zmiany te nie może być odzwierciedlane natychmiast indeksu pełnotekstowego.AUTO jest ustawieniem domyślnym.

    • WYŁĄCZANIE , nie populacji]
      Określa, że SQL Server nie przechowuje listę zmian wprowadzonych do danych indeksowanych.Gdy nie określono nr populacji, SQL Server całkowicie wypełnia indeksu po jego utworzeniu.

      Opcji populacji nie można użyć tylko wtedy, gdy CHANGE_TRACKING jest wyłączona.Po określeniu populacji nr SQL Server nie wypełnia indeksu po jego utworzeniu.Indeks jest tylko wypełniane po użytkownik wykonuje polecenie ZMIENIA indeks PEŁNOTEKSTOWY z populacji PEŁNEGO uruchomienia lub Rozpocznij PRZYROSTOWE populacji klauzula.

  • STOPLIST = {OFF | SYSTEM | stoplist_name }
    Kojarzy stoplist pełnego tekstu z indeksu.Indeks nie jest wypełniony tokeny są częścią określonej stoplist.Jeżeli nie określono STOPLIST, SQL Server kojarzy systemu stoplist pełnego tekstu z indeksu.

    • WYŁĄCZANIE
      Określa, że nie stoplist być skojarzone z indeksu pełnotekstowego.

    • SYSTEM
      Określa, że domyślny system pełnego tekstu STOPLIST powinny być używane dla tego indeksu pełnotekstowego.

    • stoplist_name
      Określa nazwę stoplist, które mają być skojarzone z indeksu pełnotekstowego.

Uwagi

Aby uzyskać więcej informacji na temat indeksy pełnotekstowe, zobacz Konfigurowanie katalogów pełnego tekstu i indeksów dla bazy danych.

Na xml kolumny, można utworzyć indeksu pełnotekstowego, który indeksuje zawartość elementów XML, ale ignoruje znaczników XML.Wartości atrybutów są pełnotekstowego indeksowania, chyba że są wartościami liczbowymi.Element tagi są używane jako granice tokenu.Obsługiwane są właociwie sformatowane dokumenty HTML lub XML i fragmentów zawierających wiele języków.Aby uzyskać więcej informacji, zobacz Indeksu pełnotekstowego w kolumnie XML.

Zaleca się, że kluczindekskolumna jest typ danych Liczba całkowita. Zapewnia to optymalizacje na wykonanie kwerendy czas.

Interakcje śledzenia zmian i Brak parametru populacji

Czy wypełnione indeksu pełnotekstowego zależy od tego, czy włączono rejestrowanie zmian oraz czy z populacji nie określono zmiany indeks PEŁNOTEKSTOWY instrukcja.W poniższej tabela podsumowano wynik ich interakcji.

Śledzenie zmian

NIE POPULACJI

Wynik

Nie włączone

Nie określono

Pełna zapełnianie odbywa się w indeksie.

Nie włączone

Określony

Nie zapełnianie indeksu występuje aż indeks PEŁNOTEKSTOWY ALTER...START populacji instrukcja zostało wydane.

Włączone

Określony

Spowodował błąd i indeks nie ulega zmianie.

Włączone

Nie określono

Pełna zapełnianie odbywa się w indeksie.

Aby uzyskać więcej informacji na temat wypełniania indeksy pełnotekstowe, zobacz Populacji indeksu pełnotekstowego.

Uprawnienia

Użytkownik musi uprawnień odwołania wykaz pełnotekstowy i ZMIEŃ uprawnienia w tabela lub indeksowany widoklub element członkowski sysadmin stała rola serweralub db_owner, lub db_ddladmin stałe role bazy danych.

Jeśli określono ustawienie STOPLIST użytkownik musi mieć uprawnienie odwołania na określony stoplist.Właściciel STOPLIST można przyznać to uprawnienie.

Ostrzeżenie

Społeczeństwo jest uprawnienie odniesienia stoplist domyślny, który jest dostarczany z SQL Server.

Przykłady

A.Tworzenie indeks unikatowy, wykaz pełnotekstowyi indeksu pełnotekstowego

Poniższy przykład tworzy indeks unikatowy na JobCandidateID kolumna HumanResources.JobCandidate tabela AdventureWorks2008R2 przykładowej bazy danych.Przykład następnie tworzy domyślny wykaz pełnotekstowy ft.Wreszcie, w przykładzie zostanie utworzony indeks pełnotekstowy na Resume kolumnaza pomocą ft katalog i stoplist systemu.

USE AdventureWorks2008R2;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) 
   KEY INDEX ui_ukJobCand 
   WITH STOPLIST = SYSTEM;
GO

B.Tworzenie indeksu pełnotekstowego w kilku kolumnach tabela

Poniższy przykład tworzy indeks pełnotekstowy na ReviewerName, EmailAddress, i Comments kolumny Production.ProductReview tabela AdventureWorks2008R2 przykładowej bazy danych.Dla każdej kolumnaw przykładzie określa identyfikator LCID z angielskiego, 1033, która jest język danych w kolumnach.Ten indeks pełnotekstowy używa domyślnej wykaz pełnotekstowy i istniejący indeks unikatowy klucz PK_ProductReview_ProductReviewID.Zgodnie z zaleceniami, ten indeks klucz znajduje się na całkowitą kolumna, ProductReviewID.

USE AdventureWorks2008R2;
GO
CREATE FULLTEXT INDEX ON Production.ProductReview
( 
  ReviewerName
     Language 1033,
  EmailAddress
     Language 1033,
  Comments 
     Language 1033     
 ) 
KEY INDEX PK_ProductReview_ProductReviewID ; 
GO

C.Tworzenie indeksu pełnotekstowego bez wypełniania go

Poniższy przykład tworzy wykaz pełnotekstowy documents_catalog, AdventureWorks2008R2 przykładowej bazy danych.Przykład tworzy następnie indeksu pełnotekstowego, korzystającej z tego nowego katalogu.Indeks pełnotekstowy znajduje się na Title, DocumentSummary, i Document kolumny Production.Document tabela.W przykładzie określa identyfikator LCID z angielskiego, 1033, która jest język danych w kolumnach.Ten indeks pełnotekstowy używa domyślnej wykaz pełnotekstowy i istniejący indeks unikatowy klucz PK_Document_DocumentID.Zgodnie z zaleceniami, ten indeks klucz znajduje się na całkowitą kolumna, DocumentID.

W przykładzie określono stoplist systemu.

W przykładzie określono, śledzenie zmian jest nie zapełnianiewyłączone.Później poza godzinami szczytu, w przykładzie użyto zmienić indeks PEŁNOTEKSTOWY instrukcja do uruchomienia pełnej zapełnianie na nowy indeks i włączyć śledzenie automatycznej zmianie.

USE AdventureWorks2008R2;
GO
CREATE FULLTEXT CATALOG documents_catalog;
GO
CREATE FULLTEXT INDEX ON Production.Document
  ( 
  Title
      Language 1033, 
  DocumentSummary
      Language 1033, 
  Document 
      TYPE COLUMN FileExtension
      Language 1033 
  )
  KEY INDEX PK_Document_DocumentID
      ON documents_catalog
      WITH STOPLIST = SYSTEM , CHANGE_TRACKING OFF, NO POPULATION;
   GO

Później w szczytu czas, indeks jest wypełniona:

ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO;
GO