Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Ten artykuł opisuje, jak tworzyć, wypełniać i zarządzać indeksami pełnotekstowymi w SQL Server Database Engine. Indeks pełnotekstowy wspiera wyszukiwanie słów kluczowych i językowych w kolumnach znakowych w tabeli.
Stwórz katalog w pełnym tekstie
Zanim stworzysz indeks pełnotekstowy, potrzebujesz katalogu pełnego tekstu. Wykaz jest kontenerem wirtualnym dla co najmniej jednego indeksu pełnotekstowego. Więcej informacji można znaleźć w sekcji Utwórz i zarządzaj Full-Text katalogami.
Tworzenie, zmienianie lub usuwanie indeksu pełnotekstowego
Wypełnianie indeksu pełnotekstowego
Proces tworzenia i utrzymywania indeksu pełnotekstowego jest nazywany populacją (znaną również jako przeszukiwanie). Istnieją trzy typy populacji indeksów pełnotekstowych:
- Pełna populacja
- Populacja oparta na śledzeniu zmian
- Populacja przyrostowa na podstawie znacznika czasu
Aby uzyskać więcej informacji, zobacz Wypełnianie indeksów Full-Text.
Wyświetlanie właściwości indeksu pełnotekstowego
Wyświetlanie właściwości indeksu pełnotekstowego za pomocą Transact-SQL
| Wykaz lub dynamiczny widok zarządzania | Description |
|---|---|
| sys.fulltext_index_catalog_usages | Zwraca wiersz dla każdego odniesienia katalogu pełnotekstowego do indeksu pełnotekstowego. |
| sys.fulltext_index_columns | Zawiera wiersz dla każdej kolumny będącej częścią indeksu pełnotekstowego. |
| sys.fulltext_index_fragments | Indeks pełnotekstowy wykorzystuje wewnętrzne tabele zwane fragmentami indeksu pełnego tekstu do przechowywania odwróconych danych indeksowych. Możesz użyć tego widoku, aby zapytać metadane dotyczące tych fragmentów. Ten widok zawiera po jednym wierszu dla każdego fragmentu indeksu pełnotekstowego w każdej tabeli zawierającej indeks pełnotekstowy. |
| Sys.fulltext_indexes | Zawiera jeden wiersz dla każdego indeksu pełnotekstowego obiektu tabelarycznego. |
| sys.dm_fts_index_keywords | Zwraca informacje o zawartości indeksu pełnotekstowego dla określonej tabeli. |
| sys.dm_fts_index_keywords_by_document | Zwraca informacje o zawartości na poziomie dokumentu indeksu pełnotekstowego dla określonej tabeli. Dane słowo kluczowe może pojawić się w kilku dokumentach. |
| sys.dm_fts_index_population | Zwraca informacje o populacjach indeksów pełnotekstowych aktualnie w toku. |
Wyświetlanie właściwości indeksu pełnotekstowego za pomocą programu SQL Server Management Studio
Uwaga / Notatka
Aby wyświetlić właściwości indeksów pełnotekstowych dla baz danych Azure SQL Database, użyj języka Transact-SQL.
W programie SQL Server Management Studio w Eksploratorze obiektów rozwiń serwer.
Rozwiń Databases, a następnie bazę danych, która zawiera indeks pełnotekstowy.
Rozwiń Tabele.
Kliknij prawym przyciskiem myszy tabelę, w której zdefiniowano indeks Full-Text, wybierz pozycję Full-Text indeks, a następnie w menu kontekstowym indeks Full-Text wybierz pozycję Właściwości. Ta akcja otwiera okno dialogowe Właściwości indeksu pełnego tekstu .
W panelu Wybierz stronę wybierz dowolną z następujących stron:
Strona Description Ogólne Wyświetla podstawowe właściwości indeksu pełnotekstowego. Właściwości te obejmują kilka modyfikowalnych właściwości oraz wiele niezmiennych, takich jak nazwa bazy danych, nazwa tabeli oraz nazwa kolumny klucza pełnego tekstu. Właściwości modyfikowalne to:
Stoplista indeksu pełnotekstowego
Włączono indeksowanie pełnotekstowe
Śledzenie zmian
Lista właściwości wyszukiwaniaColumns Wyświetla kolumny tabeli, które są dostępne do indeksowania pełnotekstowego. Wybrana kolumna lub kolumny są indeksowane pełnotekstowo. Możesz wybrać dowolną liczbę dostępnych kolumn, które mają zostać uwzględnione w indeksie pełnotekstowym. Aby uzyskać więcej informacji, zobacz Wypełnianie indeksów Full-Text. Harmonogramy Ta strona służy do tworzenia lub zarządzania harmonogramami zadania agenta programu SQL Server, które uruchamiają przyrostowe wypełnianie tabel dla indeksów pełnotekstowych. Aby uzyskać więcej informacji, zobacz Wypełnianie indeksów Full-Text.
Uwaga: Po zamknięciu okna dialogowego Właściwości indeksu pełnotekstowego każdy nowo utworzony harmonogram jest skojarzony z zadaniem agenta SQL Server (Start Incremental Table Population w database_name.table_name).Wybierz przycisk OK , aby zapisać wszelkie zmiany i zamknąć okno dialogowe Właściwości indeksu pełnotekstowego .
Wyświetlanie właściwości indeksowanych tabel i kolumn
Możesz użyć kilku funkcji Transact-SQL, takich jak OBJECTPROPERTYEX, aby uzyskać wartość różnych właściwości indeksowania pełnego tekstu. Te informacje są przydatne do administrowania wyszukiwaniem pełnotekstowym i rozwiązywaniem problemów z nim.
W poniższej tabeli wymieniono właściwości pełnotekstowe związane z indeksowanymi tabelami i kolumnami oraz powiązanymi funkcjami Transact-SQL.
| Majątek | Description | Funkcja |
|---|---|---|
| FullTextTypeColumn |
TYPE COLUMN w tabeli, która zawiera informacje o typie dokumentu w kolumnie. |
COLUMNPROPERTY |
| IsFulltextIndexed | Określa, czy kolumna jest włączona do indeksowania pełnego tekstu. | COLUMNPROPERTY |
| IsFulltextKey | Czy indeks jest kluczem pełnotekstowym dla tabeli? | INDEXPROPERTY |
| TableFulltextBackgroundUpdateIndexOn | Czy tabela ma pełnotekstowe aktualizowanie w tle przy indeksowaniu. | OBJECTPROPERTYEX |
| TableFulltextCatalogId | Identyfikator wykazu pełnotekstowego, w którym znajdują się dane indeksu pełnotekstowego dla tabeli. | OBJECTPROPERTYEX |
| TableFulltextChangeTrackingOn | Określa, czy tabela ma włączone śledzenie zmian pełnotekstowych. | OBJECTPROPERTYEX |
| TableFulltextDocsProcessed | Liczba wierszy przetworzonych od początku indeksowania pełnotekstowego. | OBJECTPROPERTYEX |
| TableFulltextFailCount | Liczba wierszy nie zindeksowanych przez pełnotekstowe wyszukiwanie. | OBJECTPROPERTYEX |
| TableFulltextItemCount | Liczba wierszy, które zostały pomyślnie indeksowane pełnotekstowo. | OBJECTPROPERTYEX |
| TableFulltextKeyColumn | Identyfikator kolumny będącej unikatowym kluczem pełnotekstowym. | OBJECTPROPERTYEX |
| TableFullTextMergeStatus | Czy tabela z indeksem pełnotekstowym jest obecnie w trakcie scalania? | OBJECTPROPERTYEX |
| TableFulltextPendingChanges | Liczba oczekujących wpisów śledzenia zmian do przetworzenia. | OBJECTPROPERTYEX |
| TableFulltextPopulateStatus | Stan populacji tabeli pełnotekstowej. | OBJECTPROPERTYEX |
| TableHasActiveFulltextIndex | Określa, czy tabela ma aktywny indeks pełnotekstowy. | OBJECTPROPERTYEX |
Uzyskaj informacje o kluczowej kolumnie pełnotekstowej
Zazwyczaj łączy się wynik funkcji zwracających zestaw wierszy CONTAINSTABLE lub FREETEXTTABLE z tabelą bazową. W takich przypadkach musisz znać unikatową nazwę kolumny klucza. Możesz sprawdzić, czy dany unikalny indeks jest używany jako klucz pełnotekstowy, oraz uzyskać identyfikator kolumny klucza pełnego tekstu.
Określanie, czy dany unikatowy indeks jest używany jako kolumna klucza pełnotekstowego
Użyj instrukcji SELECT , aby wywołać funkcję INDEXPROPERTY . W wywołaniu funkcji użyj OBJECT_ID funkcji do przekształcenia nazwy tabeli (table_name) na identyfikator tabeli, określ nazwę unikalnego indeksu dla tabeli i określ właściwość indeksu IsFulltextKey w następujący sposób:
SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey');
To zdanie zwraca 1 , jeśli indeks wymusza unikalność dla kolumny klucza pełnego tekstu, a 0 jeśli nie.
Example
Poniższy przykład sprawdza, czy PK_Document_DocumentNode indeks wymusza unikalność dla kolumny klucza pełnego tekstu:
USE AdventureWorks2025;
GO
SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode', 'IsFulltextKey');
Ten przykład zwraca 1, jeśli PK_Document_DocumentNode indeks wymusza unikalność dla kolumny klucza pełnego tekstu. W przeciwnym razie zwraca 0 lub NULL.
NULL Oznacza to, że używasz nieprawidłowej nazwy indeksu, nazwa indeksu nie odpowiada tabeli, tabela nie istnieje i tak dalej.
Znajdź identyfikator kolumny klucza pełnotekstowego
Każda tabela z pełnym tekstem ma kolumnę, która wymusza unikalne wiersze dla tabeli (unikalna kolumna klucza). Właściwość TableFulltextKeyColumn, uzyskana z funkcji OBJECTPROPERTYEX, zawiera identyfikator kolumny klucza unikatowego.
Aby uzyskać ten identyfikator, użyj SELECT instrukcji, która wywołuje funkcję OBJECTPROPERTYEX . Użyj OBJECT_ID funkcji do przekształcenia nazwy tabeli (table_name) na identyfikator tabeli i określenia TableFulltextKeyColumn własności, w następujący sposób:
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn') AS 'Column Identifier';
Przykłady
Poniższy przykład zwraca identyfikator kolumny klucza pełnego tekstu lub NULL.
NULL Oznacza to, że używasz nieprawidłowej nazwy indeksu, nazwa indeksu nie odpowiada tabeli, tabela nie istnieje itd.
USE AdventureWorks2025;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
Poniższy przykład pokazuje, jak użyć identyfikatora unikalnej kolumny klucza, aby uzyskać nazwę kolumny.
USE AdventureWorks2025;
GO
DECLARE @key_column AS SYSNAME;
SET @key_column = COL_NAME(
OBJECT_ID('Production.Document'),
OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn')
);
SELECT @key_column AS 'Unique Key Column';
GO
Ten przykład zwraca kolumnę zestawu wyników o nazwie Unique Key Column, która wyświetla pojedynczy wiersz zawierający nazwę unikatowej kolumny klucza tabeli DocumentNode. Jeśli to zapytanie zawierało nieprawidłową nazwę indeksu, nazwa indeksu nie odpowiadała tabeli, tabela nie istniała i tak dalej, zwracało NULL.
Zindeksuj kolumny varbinary(max) i XML
Jeśli utworzysz indeks pełnotekstowy dla kolumny varbinary(max), varbinary lub xml, możesz wykonywać na niej zapytania za pomocą predykatów pełnotekstowych (CONTAINS i FREETEXT) oraz funkcji (CONTAINSTABLE i FREETEXTTABLE), tak jak w przypadku każdej innej kolumny zindeksowanej pełnotekstowo.
Indeks varbinary(max) lub varbinary data
Pojedyncza kolumna varbinary(max) lub varbinary może przechowywać wiele typów dokumentów. Database Engine obsługuje każdy typ dokumentu, dla którego zainstalowany jest filtr i dostępny w systemie operacyjnym. Typ dokumentu każdego dokumentu jest identyfikowany przez rozszerzenie pliku dokumentu. Na przykład dla rozszerzenia .doc pliku wyszukiwanie pełnotekstowe wykorzystuje filtr wspierający dokumenty Microsoft Word. Aby uzyskać listę dostępnych typów dokumentów, wykonaj zapytanie dotyczące widoku wykazu sys.fulltext_document_types .
Silnik Full-Text może używać istniejących filtrów zainstalowanych w systemie operacyjnym. Aby można było używać filtrów systemu operacyjnego, modułów dzielenia wyrazów i stemmerów, należy załadować je w wystąpieniu serwera w następujący sposób:
EXECUTE sp_fulltext_service
@action = 'load_os_resources',
@value = 1;
Aby utworzyć indeks pełnotekstowy w kolumnie varbinary(max), silnik Full-Text musi mieć dostęp do rozszerzeń plików dokumentów w kolumnie varbinary(max). Musisz przechowywać te informacje w kolumnie tabeli, zwanej kolumną typu, którą przypisujesz kolumnie varbinary(max) w indeksie pełnym tekstem. Podczas indeksowania dokumentu aparat Full-Text używa rozszerzenia pliku w kolumnie typu w celu zidentyfikowania, który filtr ma być używany.
Indeksowanie danych XML
Kolumna typu danych XML przechowuje tylko dokumenty XML i fragmenty, a tylko filtr XML jest używany dla dokumentów. W związku z tym kolumna typu jest niepotrzebna. W kolumnach XML indeks pełnotekstowy indeksuje zawartość elementów XML, ale ignoruje znaczniki XML. Wartości atrybutów są indeksowane w pełnym tekście, chyba że są to wartości liczbowe. Znaczniki elementów są używane jako granice tokenów. Obsługiwane są dobrze skonstruowane dokumenty XML lub HTML oraz fragmenty zawierające wiele języków.
Aby uzyskać więcej informacji o indeksowaniu i zapytaniach na kolumnie xml , zobacz : Użyj pełnotekstowego wyszukiwania z kolumnami XML.
Wyłączanie lub ponowne włączanie indeksowania pełnotekstowego dla tabeli
W Database Engine wszystkie bazy danych tworzone przez użytkownika są domyślnie włączone z pełnym tekstem. Ponadto pojedyncza tabela jest automatycznie włączona na potrzeby indeksowania pełnotekstowego zaraz po utworzeniu na nim indeksu pełnotekstowego i do indeksu zostanie dodana kolumna. Tabela jest automatycznie wyłączona na potrzeby indeksowania pełnotekstowego, gdy ostatnia kolumna zostanie porzucona z indeksu pełnotekstowego.
W tabeli z indeksem pełnego tekstu można ręcznie wyłączyć lub ponownie włączyć tabelę do indeksowania pełnego tekstu, korzystając z SQL Server Management Studio.
Rozwiń grupę serwerów, rozwiń węzeł Bazy danych i rozwiń bazę danych zawierającą tabelę, którą chcesz włączyć do indeksowania pełnotekstowego.
Rozwiń Tabele i kliknij prawym przyciskiem myszy tabelę, którą chcesz wyłączyć lub ponownie włączyć do indeksowania pełnotekstowego.
Wybierz indeks Full-Text, a następnie wybierz opcję Wyłącz indeks Full-Text lub Włącz indeks Full-Text.
Usuwanie indeksu pełnotekstowego z tabeli
W Eksploratorze obiektów kliknij prawym przyciskiem myszy tabelę zawierającą indeks pełnotekstowy, który chcesz usunąć.
Wybierz Usuń Full-Text index.
Po wyświetleniu monitu wybierz przycisk OK , aby potwierdzić, że chcesz usunąć indeks pełnotekstowy.
Treści powiązane
- Wyszukiwanie pełnotekstowe
- Full-Text Procedury przechowywane w wyszukiwaniu i wyszukiwaniu semantycznym (Transact-SQL)
- Create and Manage Full-Text Catalogs (Tworzenie katalogów pełnotekstowych i zarządzanie nimi)