Wprowadzenie do wyszukiwania pełnotekstowego

W bazach danych w SQL Server są pełnego tekstu włączony domyślnieJednakże, aby użyć indeksu pełnotekstowego w tabela, należy zestaw możliwości indeksowania pełnotekstowego kolumn tabel, które chcesz uzyskać dostęp za pomocą aparatu pełnego tekstu w górę.

Obejmuje następujące podstawowe czynności:

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

    Każdy indeks pełnotekstowy musi należeć do wykaz pełnotekstowy.Można utworzyć wykaz oddzielnych tekst dla każdego indeksu pełnotekstowego lub z danego katalogu można skojarzyć wiele indeksy pełnotekstowe.

    Ostrzeżenie

    Począwszy od SQL Server 2008, wykaz pełnotekstowy jest obiektem wirtualnych i nie należą do żadnego grupa plików.wykaz pełnotekstowy jest koncepcja logiczne odnosi się do grupy indeksy pełnotekstowe.

  2. Tworzenie indeksu pełnotekstowego w tabela lub indeksowany widok.

    Indeks pełnotekstowy to specjalny typ tokenów indeksu funkcjonalności, zbudowane i utrzymywane przez aparat pełnego tekstu.Aby utworzyć przeszukiwanie pełnego tekstu tabela lub widoku, musi mieć unikatowy, jedno -kolumna,-nullable indeksu.Aparat pełnotekstowe wymaga to unikatowy indeks unikatowy klucz Kompresowalne mapowania każdy wiersz w tabela.A full-text index can include char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, and varbinary(max) columns.Aby uzyskać więcej informacji, zobacz Omówienie indeksowania pełnotekstowego.

Przed naukę tworzenia indeksy pełnotekstowe, ważne jest, aby rozważyć sposób różnią się od zwykłych SQL Server indeksy.W poniższej tabela przedstawiono różnice.

Indeksy pełnotekstowe

Regularne indeksami programu SQL Server

Tylko jeden indeks pełnotekstowy tabela.

Kilka regularnych indeksów tabela.

Dodanie danych indeksy pełnotekstowe nazywany zapełnianie, mogą być żądane przez harmonogram lub szczególne żądanie lub wykonywane automatycznie, z dodaniem nowych danych.

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

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

Nie są zgrupowane.

Zagadnienia dotyczące tworzenia indeksu pełnotekstowego

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

  • Wybieranie języka kolumna

  • Wybieranie grupa plików do indeksu pełnotekstowego

  • Przypisywanie do indeksu pełnotekstowegowykaz pełnotekstowy

  • Skojarzenie stoplist z indeksu pełnotekstowego

  • Aktualizowanie indeksu pełnotekstowego

Wybieranie języka kolumny

Informacje należy rozważyć podczas wybierania języka kolumna, zobacz Najważniejsze wskazówki dotyczące Wybieranie języka podczas tworzenia indeksu pełnotekstowego.

Wybieranie grupy plików indeksu pełnotekstowego

Proces budowania indeksu pełnotekstowego jest dość intensywnego we/wy (na wysoki poziom składa się z odczytu danych z SQL Serveri materiału rozmnożeniowego odfiltrowanych danych do indeksu pełnotekstowego).Najlepszym rozwiązaniem, zlokalizuj indeksu pełnotekstowego w bazie danych grupa plików jest najlepszy dla maksymalizacja wydajności We/Wy lub zlokalizuj indeksy pełnotekstowe w innym grupa plików w innym woluminie.

W przypadku ważnych łatwość zarządzania zaleca się przechowywanie danych tabela i dowolne powiązane wykazów pełnego tekstu w tym samym grupa plików.Czasami ze względu na wydajność można mieć dane w tabela i indeksu pełnotekstowego w różnych aplikacjami, które są przechowywane na różnych woluminach, aby zmaksymalizować równoległości prostych We/Wy.

Przypisywanie do wykazu pełnotekstowego indeksu pełnotekstowego

Jest ważne, aby plan rozmieszczenia indeksy pełnotekstowe dla tabel w wykazach pełnego tekstu.

Zaleca się kojarzenie 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 podczas określonego czas dnia) razem w tym samym wykaz pełnotekstowy.Konfigurując harmonogramy zapełnianie wykaz pełnotekstowy indeksy pełnotekstowe pobytu synchroniczne z tabelami bez negatywnego wpływu na wykorzystanie zasób serwera bazy danych podczas okresów aktywności dużej bazy danych.

Po przypisaniu tabela wykaz pełnotekstowy należy wziąć pod uwagę następujące wskazówki:

  • Zawsze wybierz najmniejszy dostępne dla klucz pełnotekstowego unikatowy indeks unikatowy.(4-Bajtowe, oparte na całkowitą indeksu jest optymalne). Zmniejsza to zasoby wymagane przez Microsoft wyszukiwania usługa w systemie plików znacznie.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 unikatowego klucza pełnotekstowego.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ć.

  • Jeśli są indeksowania tabela zawierającej milionów wierszy, przypisać tabela własny wykaz pełnotekstowy.

  • Należy wziąć pod uwagę kwoty zmiany zachodzące w tabelach pełnego tekstu są indeksowane, jak również całkowitą liczbę wierszy.Jeśli całkowita liczba wierszy zmianie wraz z numerami wierszy w tabela obecne podczas ostatniego zapełnianie pełnotekstowe reprezentuje milionów wierszy, przypisać tabela własny wykaz pełnotekstowy.

Skojarzenie Stoplist z indeksu pełnotekstowego

SQL Server 2008 wprowadzono stoplists.A stoplist jest lista stopwords, znany także jako słowa ignorowane.Stoplist jest skojarzony z każdym indeksu pełnotekstowego, a wyrazy w tym stoplist są stosowane do pełnego tekstu kwerendy dla tego indeksu.Domyślnie system stoplist jest skojarzony z nowego indeksu pełnotekstowego.Można jednak utworzyć i użyć własnego stoplist.Aby uzyskać więcej informacji, zobacz Stopwords i Stoplists.

For example, the following CREATE FULLTEXT STOPLIST Transact-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 STOPLIST Transact-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 pełnotekstowego

Podobnie jak zwykła SQL Server indeksy pełnotekstowe indeksy mogą być automatycznie aktualizowane, zmienione dane w tabelach skojarzone.Jest to zachowanie domyślne.Alternatywnie, można zachować indeksy pełnotekstowe w górę-do-data ręcznie lub w określonych odstępach czasu zaplanowane.Podczas wypełniania indeksu pełnotekstowego może być czas-zużywające i obciąża, w związku z tym, aktualizowaniem indeksu jest zwykle wykonywane asynchronicznego proces, który działa w tle i utrzymuje aktualne indeksu pełnotekstowego po modyfikacji w tabela bazowa.Aktualizowanie indeksu pełnotekstowego natychmiast po każdej zmiany w tabela bazowa może być zasób-intensywnego.Dlatego mają bardzo wysokie stawki insert/update/delete, mogą wystąpić niektóre pogorszenie wydajności kwerendy.Jeśli to nastąpi, rozważ zaplanowanie zmian ręczne aktualizacje nadążyć z licznych zmian z czas do czas, zamiast konkurujących z kwerend dla zasobów.

Aby monitorować stan zapełnianie, użyj funkcji FULLTEXTCATALOGPROPERTY lub OBJECTPROPERTYEX.Aby uzyskać wykaz stanu zapełnianie, uruchom następujące polecenie w instrukcja:

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

Zazwyczaj jeżeli pełny zapełnianie jest w toku, zwracana jest 1.

Przykład: Konfigurowanie przeszukiwania pełnego tekstu (Transact-SQL)

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

  1. Aby utworzyć wykaz pełnotekstowy o nazwie AdvWksDocFTCat, w przykładzie użyto Utworzyć wykaz pełnotekstowy instrukcja:

    USE AdventureWorks2008R2;
    GO
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;
    
  2. Przed utworzeniem indeksu pełnotekstowego na Document tabeli, upewnij się, że tabela ma unikatowy, jedno -kolumna, indeks-nullable.Następujące CREATE INDEX instrukcja tworzy indeks unikatowy, ui_ukDoc, na DocumentID kolumna Document tabela:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
    
  3. Po utworzeniu klucz unikatowego indeksu pełnotekstowego można tworzyć na Document tabela przy użyciu następujących Utwórz indeks PEŁNOTEKSTOWY 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 zdefiniowany w tym przykładzie określa typ kolumna w tabela, która zawiera typ dokumentu, w każdym wierszu kolumna "Dokument" (która jest typ binarny).kolumna Typ przechowuje rozszerzenie pliku dostarczone przez użytkownika — "doc", ".xls" i tak dalej — w danym wierszu dokumentu.Aparat pełnotekstowe używa rozszerzenia pliku w danym wierszu wywołać niepoprawny filtr do analizowania danych, w tym wierszu.Po analizie danych binarnych wiersz filtru określonego dzielącego analizuje zawartość (w tym przykładzie jest używany dzielącego angielski brytyjski).Należy zauważyć, że proces filtrowania dzieje się tylko na czas indeksowania 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, zobacz Filtry wyszukiwania pełnotekstowego.

Aby przejrzeć informacje o indeksu pełnotekstowego

Wykaz lub widoku dynamicznego zarządzania

Opis

sys.fulltext_index_catalog_usages (języka Transact-SQL)

Zwraca wiersz dla każdego wykaz pełnotekstowy do indeksu pełnotekstowego odniesienia.

sys.fulltext_index_columns (języka Transact-SQL)

Zawiera wiersz dla każdej kolumna, która jest częścią indeksu pełnotekstowego.

sys.fulltext_index_fragments (języka Transact-SQL)

Indeks pełnotekstowy używa wewnętrznej tabel o nazwie fragmenty indeksu pełnotekstowego do przechowywania danych indeksu odwrócony.W tym widoku można zbadać metadane dotyczące tych fragmentów.Ten widok zawiera wiersz dla każdego fragmentu indeksu pełnotekstowego w każdej tabela, która zawiera indeksu pełnotekstowego.

sys.fulltext_indexes (języka Transact-SQL)

Zawiera wiersz na indeks pełnotekstowy tabelarycznych obiektu.

sys.dm_fts_index_keywords (języka Transact-SQL)

Zwraca informacje o zawartości indeksu pełnotekstowego dla określonej tabela.

sys.dm_fts_index_keywords_by_document (języka Transact-SQL)

Zwraca informacje o zawartości dokumentu poziom indeksu pełnotekstowego 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 indeksu pełnotekstowego obecnie w toku.