Aktualizacja wyszukiwania Full-Text w SQL Server

Dotyczy:SQL Server

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 programu SQL Server 2005 (9.x) i wcześniejszych wersji.

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ń. Więcej informacji można znaleźć w artykule Konfiguruj i zarządzaj łamaczami słów i stemmerami oraz Konfiguruj i zarządzaj filtrami.

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.

Usługa FDHOST Launcher (MSSQLFDLauncher) propaguje informacje o kontach usługi do procesów hosta filtrującego demona konkretnej instancji Database Engine. Aby uzyskać informacje o konfigurowaniu konta usługi, zobacz temat Ustaw konto usługi dla uruchamiającego demona filtru pełnotekstowego.

Zgodność uaktualnienia programu SQL Server 2005

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 jeśli zaktualizujesz SQL Server 2005 (9.x), na tym samym dysku tworzy się nową grupę plików dla dowolnego katalogu pełnego tekstu zawierającego pliki danych.

Ta procedura zachowuje stare zachowanie 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

Po aktualizacji instancji SQL Server, interfejs użytkownika pozwala wybrać jedną z następujących opcji aktualizacji pełnego tekstu. Opcje te są dostępne tylko dla baz danych SQL Server 2005 (9.x).

Import

Importowane są wykazy pełnotekstowe. Zazwyczaj importowanie jest znacznie szybsze niż ponowne kompilowanie. Na przykład, mając tylko jeden rdzeń CPU, import działa około 10 razy szybciej niż odbudowa. 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

Odbudowa może działać w trybie wielowątkowym, a jeśli dostępnych jest więcej niż 10 rdzeni CPU, odbudowa może działać szybciej niż import, jeśli pozwolisz na wykorzystanie wszystkich rdzeni.

Jeśli wykaz pełnotekstowy jest niedostępny, skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane.

Aby uzyskać informacje o wpływie importu indeksu pełnego tekstu, zobacz Rozważania dotyczące wyboru opcji aktualizacji pełnego tekstu później w tym artykule.

Rebuild

Katalogi pełnotekstowe są przebudowywane przy użyciu modułów dzielenia wyrazów z bieżącej wersji. Ponowne kompilowanie indeksów może zająć trochę czasu, a po uaktualnieniu może być wymagana znaczna ilość procesora CPU i pamięci.

Zresetuj

Katalogi pełnotekstowe są resetowane. Po aktualizacji z SQL Server 2005 (9.x) pliki katalogów pełnotekstowych są usuwane, ale metadane katalogów pełnotekstowych i indeksów pełnotekstowych pozostają zachowane. 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ę ulepszenia, rozważ następujące kwestie:

  • Czy potrzebujesz spójności w wynikach zapytania?

    Database Engine instaluje nowe łamacze słów do użytku przez Full-Text i Semantic Search. Mechanizmy rozdzielania słów są używane zarówno podczas indeksowania, jak i podczas wykonywania zapytań. Jeśli nie odbudujesz wykazów pełnotekstowych, wyniki wyszukiwania mogą być niespójne. Jeśli wykonasz pełnotekstowe zapytanie, które szuka frazy połamanej inaczej przez łamacz słów w poprzedniej wersji Database Engine oraz aktualnego łamacza słów, dokument lub wiersz zawierający tę frazę może nie zostać pobrany. 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ę Odbudowy , aby to osiągnąć, albo odbudować ręcznie po wybraniu opcji Import .

  • 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 takim przypadku powinieneś skorzystać z opcji Odbudowy .

    Notatka

    W przypadku indeksów pełnotekstowych kolumna pełniąca rolę klucza indeksu pełnotekstowego powinna mieć całkowitoliczbowy typ danych. Więcej informacji można znaleźć w artykule Poprawa wydajności indeksów pełnotekstowych.

  • 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 jak najszybciej uruchomić instancję serwera i jeśli jesteś gotów wykonać ręczne wypełnianie po uaktualnieniu, Reset jest odpowiedni.

Upewnij się, że wyniki zapytania spójne po zaimportowaniu indeksu pełnotekstowego

Jeśli katalog pełnotekstowy zostanie zaimportowany podczas aktualizacji bazy danych SQL Server 2005 (9.x), mogą wystąpić rozbieżności między zapytaniem a treścią indeksu pełnego tekstu z powodu różnic w zachowaniu starych i nowych łamaczy słów. 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 skompiluj wykaz pełnotekstowy zawierający indeks pełnotekstowy za pomocą polecenia ALTER FULLTEXT CATALOG:

    ALTER FULLTEXT CATALOG <catalog_name> REBUILD;
    
  • Wykonaj FULL POPULATION na indeksie pełnotekstowym za pomocą ALTER FULLTEXT INDEX:

    ALTER FULLTEXT INDEX ON <table_name> START FULL POPULATION;
    

Więcej informacji o łamaczach słów znajdziesz w artykule Konfiguruj i zarządzaj łamaczami słów oraz stemmerami.

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.

  • Jeśli nie chcesz stosować żadnych słów pomijanych do indeksów pełnotekstowych (na przykład jeśli usunąłeś lub skasowałeś pliki wyrazów szumu w instalacji programu SQL Server 2005 (9.x)), musisz wyłączyć listę słów pomijanych dla każdego uaktualnionego 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];
    GO
    
    ALTER FULLTEXT INDEX ON [table]
    SET STOPLIST OFF;
    GO
    

    Klauzula STOPLIST OFF usuwa filtrowanie słów pustych i powoduje wypełnienie tabeli bez filtrowania jakichkolwiek słów uznawanych za szum informacyjny.

Tworzenie kopii zapasowych i importowanych wykazów pełnotekstowych

W katalogach pełnotekstowych, które są odbudowywane lub resetowane podczas aktualizacji (oraz w nowych katalogach pełnotekstowych), katalog pełnotekstowy jest pojęciem logicznym 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 pełnotekstowych.

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 katalogó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ść upgrade_option serwera określa, której opcji aktualizacji pełnotekstowej używa instancja serwera podczas tych aktualizacji bazy danych.

Po dołączeniu, przywróceniu lub skopiowaniu dowolnej bazy danych SQL Server 2005 (9.x) do nowszej instancji, baza staje się dostępna natychmiast i automatycznie aktualizowana. W zależności od ilości indeksowanych danych importowanie może potrwać kilka godzin, a ponowne kompilowanie może potrwać do 10 razy dłużej. Jeśli opcja uaktualnienia zostanie ustawiona na import, jeśli wykaz pełnotekstowy nie jest dostępny, skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane.

Zmiana zachowania aktualizacji pełnego tekstu w wystąpieniu serwera

Zagadnienia dotyczące przywracania wykazu pełnotekstowego programu SQL Server 2005 (9.x)

Jedną z metod aktualizacji danych pełnotekstowych z bazy danych SQL Server 2005 (9.x) jest przywrócenie pełnej kopii zapasowej bazy danych do nowszej instancji 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 zawiera wykaz 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 katalogów pełnotekstowych programu SQL Server 2005 (9.x), zobacz Tworzenie kopii zapasowych i przywracanie katalogów pełnotekstowych oraz indeksów oraz Tworzenie kopii zapasowych i przywracanie plików oraz katalogów pełnotekstowych w Dokumentacji SQL Server 2005 (9.x) Online.

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. Na przykład, jeśli nazwa katalogu to cat1, domyślna nazwa pliku bazy danych SQL Server to ftrow_cat1.ndf. Jeśli jednak domyślna nazwa jest już używana w katalogu docelowym, nowy plik bazy danych miałby nazwę ftrow_nazwa-katalogu{GUID}.ndf, gdzie GUID jest globalnie unikatowym identyfikatorem nowego pliku.

Po zaimportowaniu wykazów sys.database_files i sys.master_files zostaną zaktualizowane w celu usunięcia pozycji katalogu, a kolumna path w sys.fulltext_catalogs jest ustawiona na NULL.

Tworzenie kopii zapasowej bazy danych

Przywracanie kopii zapasowej bazy danych

Przykład

Poniższy przykład wykorzystuje klauzulę MOVE w RESTORE instrukcji do przywrócenia bazy danych 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.mdfjest przenoszony do C:\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 do C:\temp. Po zaimportowaniu indeksów pełnotekstowych są one automatycznie umieszczane w pliku bazy danych, C:\ftrow_sysft_cat90.ndf, a 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 znaleźć 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.

Więcej informacji o odłączaniu i dołączaniu bazy danych można znaleźć w sekcji Odłączanie i dołączanie bazy danych, CREATE DATABASE, sp_attach_db oraz sp_detach_db.