Ulepszenie wyszukiwania Full-Text
Dotyczy:programu SQL Server
Azure SQL Database
Program SQL Server uaktualnia wyszukiwanie pełnotekstowe podczas instalacji lub podczas dołączania, przywracania lub kopiowania plików bazy danych i katalogów pełnotekstowych z wcześniejszej wersji programu SQL Server.
Uaktualnij wystąpienie serwera
W przypadku uaktualnienia w miejscu instancja serwera SQL jest ustawiona obok starej wersji, a następnie dane są migrowane. Jeśli zainstalowano starą wersję programu SQL Server z wyszukiwaniem pełnotekstowym, zostanie automatycznie zainstalowana nowa wersja wyszukiwania pełnotekstowego. Instalacja obok siebie oznacza, że każdy z poniższych składników istnieje na poziomie wystąpienia programu SQL Server.
Podziałki wyrazów, stemmery i filtry
Każde wystąpienie używa teraz własnego zestawu segmentatorów wyrazów, stemmerów i filtrów, zamiast polegać na wersji systemowej tych składników. Te składniki są również łatwiejsze do rejestrowania i konfigurowania na poziomie poszczególnych wystąpień. Aby uzyskać więcej informacji, zobacz Konfiguracja i zarządzanie przerywaczami słów i stemmerami dla wyszukiwania oraz Konfigurowanie i zarządzanie filtrami dla wyszukiwania.
Filtruj hosta demona
Hosty usługi filtru pełnotekstowego to procesy bezpiecznie ładujące i obsługujące rozszerzalne składniki zewnętrzne używane do indeksowania i zapytań, takie jak moduły dzielenia wyrazów, stemmery i filtry, bez naruszania integralności silnika Full-Text. Wystąpienie serwera używa procesu wielowątkowego dla wszystkich filtrów wielowątkowych i procesu jednowątkowego dla wszystkich filtrów jednowątkowych.
Notatka
Program SQL Server 2008 (10.0.x) wprowadził konto usługi dla usługi uruchamiania FDHOST (MSSQLFDLauncher). Ta usługa przekazuje informacje o koncie usługi do procesów hosta demona filtru w określonym wystąpieniu programu SQL Server. Aby uzyskać informacje na temat ustawiania konta usługi, zobacz Set the Service Account for the Full-text Filter Daemon Launcher.
W programie SQL Server 2005 (9.x) każdy indeks pełnotekstowy znajduje się w wykazie pełnotekstowym należącym do grupy plików, ma ścieżkę fizyczną i jest traktowany jako plik bazy danych. W programie SQL Server 2008 (10.0.x) i nowszych wersjach wykaz pełnotekstowy jest obiektem logicznym lub wirtualnym zawierającym grupę indeksów pełnotekstowych. W związku z tym nowy katalog pełnotekstowy nie jest traktowany jako plik bazy danych ze ścieżką fizyczną. Jednak podczas uaktualniania dowolnego wykazu pełnotekstowego zawierającego pliki danych na tym samym dysku jest tworzona nowa grupa plików. Utrzymuje to stare działanie operacji we/wy dysku po uaktualnieniu. Każdy indeks pełnotekstowy z tego wykazu jest umieszczany w nowej grupie plików, jeśli istnieje ścieżka główna. Jeśli stara ścieżka wykazu pełnotekstowego jest nieprawidłowa, uaktualnienie zachowuje indeks pełnotekstowy w tej samej grupie plików co tabela podstawowa lub, dla tabeli partycjonowanej, w podstawowej grupie plików.
Opcje pełnotekstowego uaktualnienia
Podczas uaktualniania wystąpienia programu SQL Server interfejs użytkownika umożliwia wybranie jednej z następujących opcji uaktualniania pełnotekstowego.
Importowanie
Importowane są wykazy pełnotekstowe. Zazwyczaj importowanie jest znacznie szybsze niż ponowne kompilowanie. Na przykład w przypadku używania tylko jednego procesora CPU importowanie jest uruchamiane około 10 razy szybciej niż ponowne kompilowanie. Jednak zaimportowany wykaz pełnotekstowy nie używa nowych elementów podziału wyrazów zainstalowanych z najnowszą wersją programu SQL Server. Aby zapewnić spójność wyników zapytań, należy ponownie skompilować wykazy pełnotekstowe.
Notatka
Ponowne kompilowanie może działać w trybie wielowątkowym, a jeśli jest dostępnych więcej niż 10 procesorów CPU, ponowne kompilowanie może działać szybciej niż importowanie, jeśli zezwolisz na ponowne kompilowanie wszystkich procesorów CPU.
Jeśli wykaz pełnotekstowy jest niedostępny, skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane. Ta opcja jest dostępna tylko dla baz danych programu SQL Server 2005 (9.x).
Aby uzyskać informacje o wpływie importowania indeksu pełnotekstowego, zobacz "Zagadnienia dotyczące wybierania opcji uaktualnienia Full-Text" w dalszej części tego tematu.
Ponowne kompilowanie
Wykazy pełnotekstowe są ponownie tworzone przy użyciu nowych i rozszerzonych modułów dzielenia wyrazów. Ponowne kompilowanie indeksów może zająć trochę czasu, a po uaktualnieniu może być wymagana znaczna ilość procesora CPU i pamięci.
resetowania
Katalogi pełnotekstowe są resetowane. Podczas uaktualniania z programu SQL Server 2005 (9.x) pliki wykazu pełnotekstowego są usuwane, ale metadane dla katalogów pełnotekstowych i indeksów pełnotekstowych są zachowywane. Po uaktualnieniu wszystkie indeksy pełnotekstowe są wyłączone na potrzeby śledzenia zmian i przeszukiwania nie są uruchamiane automatycznie. Wykaz pozostanie pusty do momentu ręcznego wydania pełnej populacji po zakończeniu uaktualniania.
Zagadnienia dotyczące wybierania opcji aktualizacji pełnego tekstu
Wybierając opcję aktualizacji, należy wziąć pod uwagę następujące kwestie:
Czy potrzebujesz spójności w wynikach zapytania?
Program SQL Server instaluje nowe moduły dzielenia wyrazów na potrzeby Full-Text i wyszukiwania semantycznego. Mechanizmy rozdzielania słów są używane zarówno podczas indeksowania, jak i podczas wykonywania zapytań. Jeśli nie skompilujesz wykazów pełnotekstowych, wyniki wyszukiwania mogą być niespójne. Jeśli wydasz zapytanie pełnotekstowe, które wyszukuje frazę podzieloną inaczej przez moduł podziału wyrazów w poprzedniej i bieżącej wersji SQL Server, dokument lub wiersz zawierający frazę może nie zostać znaleziony. Wynika to z faktu, że indeksowane frazy zostały przerwane przy użyciu innej logiki niż używane przez zapytanie. Rozwiązaniem jest ponowne wypełnianie (ponowne kompilowanie) wykazów pełnotekstowych przy użyciu nowych elementów podziału wyrazów, tak aby czas indeksowania i zachowanie czasu zapytania było identyczne. Możesz wybrać opcję Odbudowa, aby to osiągnąć, lub ponownie skompilować ręcznie po wybraniu opcji Importuj.
Czy jakiekolwiek indeksy pełnotekstowe były oparte na kolumnach klucza pełnotekstowego z pełnym tekstem?
Ponowne kompilowanie wykonuje optymalizacje wewnętrzne, które zwiększają wydajność zapytań uaktualnionego indeksu pełnotekstowego w niektórych przypadkach. W szczególności, jeśli posiadasz katalogi pełnotekstowe zawierające indeksy pełnotekstowe, gdzie kolumna klucza pełnotekstowego w tabeli bazowej ma typ danych całkowitych, odbudowa pozwala na osiągnięcie idealnej wydajności zapytań pełnotekstowych po uaktualnieniu. W tym przypadku zdecydowanie zalecamy użycie opcji Odbuduj.
Notatka
W przypadku indeksów pełnotekstowych zaleca się używanie kolumny, która służy jako klucz pełnotekstowy, będącej typu danych całkowitych. Aby uzyskać więcej informacji, zapoznaj się z Poprawianie wydajności indeksów Full-Text.
Jaki jest priorytet uruchomienia wystąpienia serwera w tryb online?
Importowanie lub ponowne kompilowanie podczas uaktualniania wymaga dużej ilości zasobów procesora, co opóźnia uaktualnienie pozostałej części wystąpienia serwera i jego uruchomienie w trybie online. Jeśli ważne jest, aby uruchomić instancję serwera jak najszybciej i jesteś gotów przeprowadzić ręczne wypełnianie danych po aktualizacji, Reset jest odpowiedni.
Upewnij się, że wyniki zapytania spójne po zaimportowaniu indeksu pełnotekstowego
Jeśli podczas uaktualniania bazy danych programu SQL Server 2005 (9.x) zaimportowano wykaz pełnotekstowy, niezgodność między zapytaniem a zawartością indeksu pełnotekstowego może wystąpić z powodu różnic w zachowaniu starych i nowych elementów dzielących wyrazy. W takim przypadku, aby zagwarantować całkowite dopasowanie między zapytaniami a zawartością indeksu pełnotekstowego, wybierz jedną z następujących opcji:
Ponownie odbuduj katalog pełnotekstowy zawierający indeks pełnotekstowy (ALTER FULLTEXT CATALOGcatalog_name REBUILD)
Wydaj PEŁNĄ POPULACJĘ w indeksie pełnotekstowym (ALTER FULLTEXT INDEX ON nazwa_tabeli ROZPOCZNIJ PEŁNĄ POPULACJĘ).
Aby uzyskać więcej informacji na temat dzielenia wyrazów, zobacz Konfigurowanie i zarządzanie mechanizmami dzielenia wyrazów i lematyzacji w wyszukiwaniu.
Uaktualnianie plików wyrazów szumu w celu zatrzymania list
Po uaktualnieniu bazy danych z programu SQL Server 2005 (9.x) pliki wyrazów szumu nie są już używane. Jednak stare pliki hałasowe są przechowywane w folderze FTDATA\ FTNoiseThesaurusBak
i można z nich korzystać później podczas aktualizowania lub budowania odpowiednich list zatrzymywania SQL Server.
Po uaktualnieniu z programu SQL Server 2005 (9.x):
Jeśli nigdy nie dodano, zmodyfikowano ani nie usunięto żadnych plików z wyrazami szumu w instalacji programu SQL Server 2005 (9.x), systemowa lista wykluczających powinna spełniać Twoje potrzeby.
Jeśli pliki wyrazów szumu zostały zmodyfikowane w programie SQL Server 2005 (9.x), te modyfikacje zostaną utracone podczas aktualizacji. Aby ponownie utworzyć te aktualizacje, należy ręcznie ponownie utworzyć te modyfikacje na odpowiedniej liście zatrzymań. Aby uzyskać więcej informacji, zobacz ALTER FULLTEXT STOPLIST (Transact-SQL).
Jeśli nie chcesz stosować żadnych słów kluczowych do indeksów pełnotekstowych (na przykład w przypadku wykasowania lub usunięcia plików słów szumowych w instalacji programu SQL Server 2005 (9.x)), musisz wyłączyć listę wykluczających słów dla każdego zaktualizowanego indeksu pełnotekstowego. Uruchom następującą instrukcję Transact-SQL (zastępując bazy danych nazwą uaktualnionej bazy danych i tabelą nazwą tabeli ):
Use database; ALTER FULLTEXT INDEX ON table SET STOPLIST OFF; GO
Klauzula STOPLIST OFF usuwa filtrowanie wyrazów kluczowych i spowoduje uzupełnienie tabeli bez filtrowania żadnych wyrazów uznawanych za nieistotne.
Tworzenie kopii zapasowych i importowanych wykazów pełnotekstowych
W przypadku wykazów pełnotekstowych, które są przebudowane lub resetowane podczas uaktualniania (i w przypadku nowych wykazów pełnotekstowych), wykaz pełnotekstowy jest koncepcją logiczną i nie znajduje się w grupie plików. W związku z tym, aby utworzyć kopię zapasową wykazu pełnotekstowego, należy zidentyfikować każdą grupę plików zawierającą indeks pełnotekstowy wykazu i utworzyć kopię zapasową każdego z nich, jeden po drugim. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowych i przywracanie katalogów i indeksów Full-Text.
W przypadku wykazów pełnotekstowych, które zostały zaimportowane z programu SQL Server 2005 (9.x), wykaz pełnotekstowy jest nadal plikiem bazy danych we własnej grupie plików. Proces tworzenia kopii zapasowej programu SQL Server 2005 (9.x) dla wykazów pełnotekstowych nadal ma zastosowanie, z wyjątkiem tego, że usługa MSFTESQL nie istnieje w programie SQL Server. Aby uzyskać informacje o procesie programu SQL Server 2005 (9.x), zobacz Tworzenie kopii zapasowych i przywracanie katalogów Full-Text w książkach programu SQL Server 2005 Online.
Migrowanie indeksów pełnotekstowych podczas uaktualniania bazy danych
Pliki bazy danych i wykazy pełnotekstowe z poprzedniej wersji SQL Server mogą zostać uaktualnione do istniejącej instancji za pomocą dołączenia, przywrócenia lub Kreatora kopiowania baz danych. Indeksy pełnotekstowe programu SQL Server 2005 (9.x), jeśli istnieją, są importowane, resetowane lub ponownie tworzone. Właściwość serwera upgrade_option kontroluje opcję uaktualnienia pełnotekstowego używanego przez wystąpienie serwera podczas tych uaktualnień bazy danych.
Po dołączeniu, przywróceniu lub skopiowaniu dowolnej bazy danych programu SQL Server 2005 (9.x) nowsza baza danych stanie się dostępna natychmiast i zostanie automatycznie uaktualniona. W zależności od ilości indeksowanych danych importowanie może potrwać kilka godzin, a ponowne kompilowanie może potrwać do dziesięciu razy dłużej. Należy również pamiętać, że kiedy opcja uaktualnienia jest ustawiona na importowanie, w przypadku braku wykazu pełnotekstowego, skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane.
Aby zmienić zachowanie aktualizacji pełnotekstowej w wystąpieniu serwera
Transact-SQL: użyj akcji upgrade_optionsp_fulltext_service
SQL Server Management Studio : Użyj opcji uaktualniania Full-Text właściwości serwera okno dialogowe. Aby uzyskać więcej informacji, zobacz Zarządzaj i Monitoruj Full-Text Wyszukaj instancję serwera.
Zagadnienia dotyczące przywracania wykazu Full-Text programu SQL Server 2005 (9.x)
Jedną z metod uaktualniania danych pełnotekstowych z bazy danych programu SQL Server 2005 (9.x) jest przywrócenie pełnej kopii zapasowej bazy danych do nowszego wystąpienia programu SQL Server.
Podczas importowania wykazu pełnotekstowego programu SQL Server 2005 (9.x) można utworzyć kopię zapasową i przywrócić bazę danych oraz plik wykazu. Zachowanie jest takie samo jak w programie SQL Server 2005 (9.x):
Pełna kopia zapasowa bazy danych będzie zawierać katalog pełnotekstowy. Aby odwołać się do wykazu pełnotekstowego, użyj nazwy pliku programu SQL Server 2005 (9.x), sysft_+nazwa katalogu.
Jeśli wykaz pełnotekstowy jest w trybie offline, tworzenie kopii zapasowej zakończy się niepowodzeniem.
Aby uzyskać więcej informacji na temat tworzenia kopii zapasowych i przywracania wykazów pełnotekstowych w SQL Server 2005 (9.x), zobacz Tworzenie kopii zapasowych i przywracanie katalogów Full-Text oraz Tworzenie kopii zapasowych i przywracanie plików oraz Full-Text Katalogiw dokumentacji online SQL Server 2005 (9.x).
Po przywróceniu bazy danych w nowszym wystąpieniu programu SQL Server zostanie utworzony nowy plik bazy danych dla wykazu pełnotekstowego. Domyślną nazwą tego pliku jest ftrow_nazwa-katalogu.ndf. Jeśli na przykład nazwa katalogu to cat1
, domyślną nazwą pliku bazy danych programu SQL Server będzie ftrow_cat1.ndf
. Jeśli jednak nazwa domyślna jest już używana w katalogu docelowym, nowy plik bazy danych będzie miał nazwę ftrow_
nazwa_katalogu{
identyfikator_GUId}.ndf
, gdzie identyfikator_GUId jest globalnym identyfikatorem nowego pliku.
Po zaimportowaniu katalogów, sys.database_files i sys.master_fileszostaną zaktualizowane w celu usunięcia wpisów katalogu, a kolumna ścieżka w sys.fulltext_catalogs jest ustawiona na NULL.
Aby utworzyć kopię zapasową bazy danych
Kopie zapasowe dziennika transakcji (SQL Server) (model pełnego odzyskiwania tylko)
Aby przywrócić kopię zapasową bazy danych
Przykład
W poniższym przykładzie użyto klauzuli MOVE w instrukcji RESTORE, aby przywrócić bazę danych programu SQL Server 2005 (9.x) o nazwie ftdb1
. Pliki bazy danych, pliki dzienników i pliki katalogu programu SQL Server 2005 (9.x) są przenoszone do nowych lokalizacji w instancji serwera SQL Server w następujący sposób:
Plik bazy danych
ftdb1.mdf
jest przenoszony doC:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf
.Plik dziennika,
ftdb1_log.ldf
, jest przenoszony do katalogu dziennika na dysku dziennika, log_drive:\
log_directory\ftdb1_log.ldf
.Pliki wykazu odpowiadające wykazowi
sysft_cat90
są przenoszone doC:\temp
. Po zaimportowaniu indeksów pełnotekstowych zostaną one automatycznie umieszczone w pliku bazy danych C:\ftrow_sysft_cat90.ndf, a folder C:\temp zostanie usunięty.
RESTORE DATABASE [ftdb1] FROM DISK = N'C:\temp\ftdb1.bak' WITH FILE = 1,
MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
MOVE N'sysft_cat90' TO N'C:\temp';
Dołączanie bazy danych programu SQL Server 2005
W programie SQL Server 2008 (10.0.x) i nowszych wersjach wykaz pełnotekstowy jest koncepcją logiczną odwołującą się do grupy indeksów pełnotekstowych. Wykaz pełnotekstowy jest obiektem wirtualnym, który nie należy do żadnej grupy plików. Jednak po dołączeniu bazy danych programu SQL Server 2005 (9.x) zawierającej pliki wykazu pełnotekstowego do nowszego wystąpienia programu SQL Server pliki wykazu są dołączane z poprzedniej lokalizacji wraz z innymi plikami bazy danych, tak samo jak w programie SQL Server 2005 (9.x).
Stan każdego dołączonego wykazu pełnotekstowego w programie SQL Server jest taki sam, jak w przypadku odłączenia bazy danych od programu SQL Server 2005 (9.x). Jeśli jakakolwiek populacja indeksów pełnotekstowych została zawieszona przez operację odłączania, populacja zostanie wznowiona w programie SQL Server, a indeks pełnotekstowy stanie się dostępny do wyszukiwania pełnotekstowego.
Jeśli program SQL Server nie może odnaleźć pliku wykazu pełnotekstowego lub jeśli plik pełnotekstowy został przeniesiony podczas operacji dołączania bez określenia nowej lokalizacji, zachowanie zależy od wybranej opcji uaktualniania pełnotekstowego. Jeśli opcja uaktualnienia pełnotekstowego to Import lub Rebuild, dołączony katalog pełnotekstowy zostanie odbudowany. Jeśli opcja uaktualniania pełnotekstowego to Reset, dołączony wykaz pełnotekstowy zostanie zresetowany.
Aby uzyskać więcej informacji na temat odłączania i dołączania bazy danych, zobacz Database Detach and Attach (SQL Server), CREATE DATABASE (SQL Server Transact-SQL), sp_attach_dbi sp_detach_db (Transact-SQL).
Zobacz też
rozpoczynanie pracy z usługą Full-Text Search
Konfigurowanie i zarządzanie łamaczami wyrazów i lematyzatorami dla wyszukiwania
Konfigurowanie filtrów dla wyszukiwania i zarządzanie nimi