Rozpoczynanie pracy z usługą Full-Text Search
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Bazy danych programu SQL Server są domyślnie włączone w trybie pełnotekstowym. Przed uruchomieniem zapytań pełnotekstowych należy jednak utworzyć katalog pełnotekstowy i utworzyć indeks pełnotekstowy w tabelach lub indeksowanych widokach, które chcesz wyszukać.
Konfigurowanie wyszukiwania pełnotekstowego w dwóch krokach
Istnieją dwa podstawowe kroki konfigurowania wyszukiwania pełnotekstowego:
- Utwórz wykaz pełnotekstowy.
- Utwórz indeks pełnotekstowy w tabelach lub w indeksowanym widoku, który chcesz wyszukać.
Każdy indeks pełnotekstowy musi należeć do wykazu pełnotekstowego. Można utworzyć oddzielny katalog tekstowy dla każdego indeksu pełnotekstowego lub skojarzyć wiele indeksów pełnotekstowych z danym wykazem. Wykaz pełnotekstowy jest obiektem wirtualnym i nie należy do żadnej grupy plików. Wykaz jest koncepcją logiczną, która odwołuje się do grupy indeksów pełnotekstowych.
Notatka
W tych krokach przyjęto założenie, że podczas instalowania programu SQL Server zainstalowano opcjonalne składniki Full-Text Search. Jeśli nie, musisz ponownie uruchomić instalatora programu SQL Server, aby je dodać.
Konfigurowanie wyszukiwania pełnotekstowego za pomocą kreatora
Aby skonfigurować wyszukiwanie pełnotekstowe przy użyciu kreatora, zobacz Użyj kreatora indeksowania Full-Text.
Konfigurowanie wyszukiwania pełnotekstowego przy użyciu Transact-SQL
Poniższy dwuczęściowy przykład tworzy katalog pełnotekstowy o nazwie AdvWksDocFTCat
w przykładowej bazie danych AdventureWorks, a następnie tworzy indeks pełnotekstowy w tabeli Document
w przykładowej bazie danych. Ta instrukcja tworzy katalog pełnotekstowy w katalogu domyślnym określonym podczas instalacji programu SQL Server. Folder o nazwie AdvWksDocFTCat
znajduje się w katalogu domyślnym.
Aby utworzyć katalog pełnotekstowy o nazwie
AdvWksDocFTCat
, w przykładzie użyto instrukcji CREATE FULLTEXT CATALOG:USE AdventureWorks; GO CREATE FULLTEXT CATALOG AdvWksDocFTCat;
Aby uzyskać więcej informacji, zobacz Create and Manage Full-Text Catalogs (Tworzenie katalogów Full-Text i zarządzanie nimi).
Przed utworzeniem indeksu pełnotekstowego w tabeli Document upewnij się, że tabela ma unikatowy, jednokolumnowy indeks bez wartości null. Następująca instrukcja CREATE INDEX tworzy unikatowy indeks,
ui_ukDoc
, w kolumnie DocumentID tabeli Document:CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);
Usuń istniejący indeks pełnotekstowy w tabeli
Document
, używając następującej instrukcji DROP FULLTEXT INDEX.DROP FULLTEXT INDEX ON Production.Document GO
Po utworzeniu unikatowego klucza można utworzyć indeks pełnotekstowy w tabeli
Document
przy użyciu następującej instrukcji CREATE FULLTEXT INDEX.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 TYPE zdefiniowana w tym przykładzie określa kolumnę typu w tabeli, która zawiera typ dokumentu w każdym wierszu kolumny "Document" (który jest typem binarnym). Kolumna type przechowuje rozszerzenie pliku dostarczone przez użytkownika — ".doc", ".xls" itd. — dokumentu w danym wierszu. Silnik Full-Text używa rozszerzenia pliku w wierszu, aby wywołać prawidłowy filtr do analizy danych w tym wierszu. Po przeanalizowaniu danych binarnych wiersza przez filtr określony element podziału wyrazów analizuje zawartość. (W tym przykładzie jest używany podział wyrazów dla brytyjskiego języka angielskiego). Aby uzyskać więcej informacji, zobacz Konfiguracja i Zarządzanie Filtrowaniami dla Wyszukiwania.
Aby uzyskać więcej informacji, zobacz Create and Manage Full-Text Indexes (Tworzenie indeksów Full-Text i zarządzanie nimi).
Wybieranie opcji indeksu pełnotekstowego
Wybieranie języka
Aby uzyskać informacje na temat wybierania języka kolumn, zobacz Choose a Language When Creating a Full-Text Index (Wybieranie języka podczas tworzenia indeksu Full-Text).
Wybieranie grupy plików
Proces tworzenia indeksu pełnotekstowego jest dość intensywny pod względem operacji wejścia/wyjścia. Podsumowując, składa się z odczytywania danych z programu SQL Server, a następnie propagowania filtrowanych danych do indeksu pełnotekstowego. Najlepszym rozwiązaniem jest zlokalizowanie indeksu pełnotekstowego w grupie plików bazy danych, która jest najlepsza do maksymalizacji wydajności we/wy lub lokalizowania indeksów pełnotekstowych w innej grupie plików na innym woluminie.
Wybieranie wykazu pełnotekstowego
Zalecamy skojarzenie tabel z tymi samymi cechami aktualizacji (takimi jak niewielka liczba zmian w porównaniu z dużą liczbą zmian lub tabelami, które zmieniają się często o określonej porze dnia) razem w tym samym wykazie pełnotekstowym. Konfigurując harmonogramy populacji wykazu pełnotekstowego, indeksy pełnotekstowe pozostają synchroniczne z tabelami bez negatywnego wpływu na użycie zasobów serwera bazy danych w okresach wysokiej aktywności bazy danych.
Weź pod uwagę następujące wskazówki:
Jeśli indeksujesz tabelę z milionami wierszy, przypisz tabelę do własnego wykazu pełnotekstowego.
Rozważ liczbę zmian występujących w tabelach indeksowanych pełnotekstowo, a także całkowitą liczbę wierszy. Jeśli całkowita liczba wierszy, które są zmieniane, wraz z liczbą wierszy w tabeli obecnej podczas ostatniej populacji pełnotekstowej, osiągnie miliony wierszy, wówczas przypisz tabelę do własnego wykazu pełnotekstowego.
Kojarzenie indeksu unikatowego
Zawsze wybieraj najmniejszy unikatowy indeks dostępny dla unikatowego klucza pełnotekstowego. (Indeks oparty na 4 bajtach, liczba całkowita jest optymalny). Znacznie zmniejsza to zasoby wymagane przez usługę Microsoft Search w systemie plików. Jeśli klucz podstawowy jest duży (ponad 100 bajtów), rozważ wybranie innego unikatowego indeksu w tabeli (lub utworzenie innego unikatowego indeksu) jako unikatowego klucza pełnotekstowego. W przeciwnym razie, jeśli rozmiar klucza unikatowego pełnotekstowego przekracza dozwolony maksymalny rozmiar (900 bajtów), populacja pełnotekstowa nie będzie mogła kontynuować.
Kojarzenie listy zatrzymań
Lista stoplist jest listą słów kluczowych, znaną również jako wyrazy nieistotne. Lista stop jest skojarzona z każdym indeksem pełnotekstowym, a wyrazy z tej listy stop są stosowane do zapytań pełnotekstowych w tym indeksie. Domyślnie lista zatrzymań systemu jest skojarzona z nowym indeksem pełnotekstowym. Możesz też utworzyć własną listę zatrzymań i użyć jej.
Na przykład następująca instrukcja CREATE FULLTEXT STOPLIST Transact-SQL tworzy nową listę wyrazów pomijanych w pełnotekstowym wyszukiwaniu o nazwie myStoplist poprzez skopiowanie z systemowej listy wyrazów pomijanych:
CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO
Następująca instrukcja ALTER FULLTEXT STOPLIST Transact-SQL zmienia listę stop o nazwie myStoplist, dodając wyraz "en", najpierw dla języka hiszpańskiego, a następnie dla języka francuskiego:
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';
GO
Aby uzyskać więcej informacji, zobacz Konfigurowanie i zarządzanie słowami wykluczającymi i listami wykluczającymi dla Full-Text Wyszukiwanie.
Aktualizowanie indeksu pełnotekstowego
Podobnie jak zwykłe indeksy programu SQL Server, indeksy pełnotekstowe można automatycznie aktualizować w miarę modyfikowania danych w skojarzonych tabelach. Jest to zachowanie domyślne. Alternatywnie można utrzymywać indeksy pełnotekstowe up-to-date ręcznie lub w ustalonych odstępach czasu. Wypełnianie indeksu pełnotekstowego może być czasochłonne i intensywnie obciążające zasoby. W związku z tym aktualizowanie indeksu jest zwykle wykonywane jako proces asynchroniczny uruchamiany w tle i utrzymuje indeks pełnotekstowy na bieżąco po modyfikacjach w tabeli podstawowej.
Aktualizowanie indeksu pełnotekstowego natychmiast po każdej zmianie w tabeli podstawowej jest również intensywnie obciążane zasobami. W związku z tym, jeśli masz wysoką szybkość aktualizacji/wstawiania/usuwania, może wystąpić spadek wydajności zapytań. W takim przypadku rozważ zaplanowanie aktualizacji śledzenia zmian ręcznych, aby od czasu do czasu nadążyć za wieloma zmianami, zamiast konkurować z zapytaniami dotyczącymi zasobów.
Aby uzyskać więcej informacji, zobacz Populate Full-Text Indexes.
Następne kroki
Po skonfigurowaniu usługi SQL Server Full-Text Search możesz uruchamiać zapytania pełnotekstowe. Aby uzyskać więcej informacji, zobacz Query with Full-Text Search.