Condividi tramite


Aggiornare la ricerca a testo integrale

Si applica a:SQL ServerDatabase SQL di Azure

SQL Server aggiorna la ricerca full-text durante l’installazione o quando colleghi, ripristini o copi file di database e cataloghi full-text da una versione precedente di SQL Server.

Aggiornamento di un'istanza del server

Per un aggiornamento sul posto, un'istanza di SQL Server viene installata in modalità affiancata con la versione precedente di SQL Server, quindi viene eseguita la migrazione dei dati. Se nella versione precedente di SQL Server è installata la ricerca full-text, viene installata automaticamente una nuova versione della ricerca full-text. L'installazione affiancata implica l'esistenza di ognuno dei componenti seguenti a livello di istanza di SQL Server.

Word breaker, stemmer e filtri
In ogni istanza viene utilizzato ora un proprio set di word breaker, stemmer e filtri, anziché ricorrere alla versione di tali componenti disponibile nel sistema operativo. A livello di istanza, inoltre, la registrazione e la configurazione di questi componenti risulta più semplice. Per ulteriori informazioni, vedere Configurare e gestire i word breaker e stemmer per la ricerca (SQL Server) e Configurare e gestire i filtri per la ricerca.

Host del daemon di filtri
Gli host del demone di filtri full-text sono processi che consentono di caricare e controllare in modo sicuro i componenti esterni estensibili utilizzati per indici e query, quali analizzatori lessicali, lemmatizzatori e filtri, senza compromettere l'integrità del motore Full-Text. In un'istanza del server viene utilizzato un processo a thread multipli per tutti i filtri a thread multipli e un processo a thread singolo per tutti i filtri a thread singolo.

Nota

SQL Server 2008 (10.0.x) ha introdotto un account del servizio per il servizio FDHOST Launcher (MSSQLFDLauncher). Questo servizio propaga le informazioni sull'account del servizio ai processi host del demone filtro di un'istanza specifica di SQL Server. Per informazioni sulla configurazione dell'account del servizio, vedere Configura l'account del servizio per il Full-text Filter Daemon Launcher.

In SQL Server 2005 (9.x) ogni indice full-text risiede in un catalogo full-text che appartiene a un filegroup, dispone di un percorso fisico e viene considerato un file di database. In SQL Server 2008 (10.0.x) e versioni successive, un catalogo full-text è un oggetto logico o virtuale che contiene un gruppo di indici full-text. Pertanto, un nuovo catalogo full-text non viene considerato come un file di database con un percorso fisico. Tuttavia, durante l'aggiornamento di un catalogo full-text contenente file di dati viene creato un nuovo filegroup nello stesso disco mantenendo in questo modo il vecchio comportamento I/O su disco dopo l'aggiornamento. Tutti gli indici full-text di quel catalogo vengono posizionati nel nuovo filegroup se esiste il percorso radice. Se il percorso precedente del catalogo full-text non è valido, l'aggiornamento mantiene l'indice full-text nello stesso filegroup della tabella di base o, nel caso di una tabella partizionata, nel filegroup primario.

Opzioni di aggiornamento di testo completo

Quando si aggiorna un'istanza di SQL Server, l'interfaccia utente consente di scegliere una delle opzioni di aggiornamento full-text seguenti.

Importa
I cataloghi full-text vengono importati. In genere, l'importazione è molto più veloce della ricompilazione. Se ad esempio si utilizza solo una CPU, l'importazione è di circa 10 volte più veloce della ricompilazione. Tuttavia, un catalogo full-text importato non usa i nuovi word breaker installati con la versione più recente di SQL Server. Per garantire la coerenza nei risultati delle query, i cataloghi full-text devono essere ricompilati.

Nota

La ricompilazione può essere eseguita in modalità a thread multipli e, nel caso in cui siano disponibili più di 10 CPU, può risultare più veloce dell'importazione se si consente alla ricompilazione di utilizzare tutte le CPU.

Se non è disponibile un catalogo full-text, gli indici full-text associati vengono ricompilati. Questa opzione è disponibile solo per i database di SQL Server 2005 (9.x).

Per informazioni sull'impatto dell'importazione di un indice full-text, vedere "Considerazioni per la scelta di un'opzione di aggiornamento full-text" più avanti in questo argomento.

Ricostruzione
I cataloghi full-text vengono ricompilati utilizzando i nuovi e ottimizzati segmentatori di parole. La ricompilazione degli indici può richiedere tempo. Dopo l'aggiornamento, inoltre, potrebbe essere necessaria una quantità significativa di CPU e di memoria.

Ripristina
I cataloghi full-text vengono ripristinati. Quando esegui l’aggiornamento da SQL Server 2005 (9.x), i file del catalogo full-text vengono rimossi, ma i metadati per i cataloghi e per gli indici full-text vengono mantenuti. Dopo l'aggiornamento, tutti gli indici full-text vengono disabilitati per il rilevamento delle modifiche e le ricerche per indicizzazione non vengono avviate automaticamente. Il catalogo resterà vuoto fino a quando non si eseguirà manualmente un popolamento completo al termine dell'aggiornamento.

Considerazioni per la scelta di un'opzione di aggiornamento a testo completo

Quando si sceglie l'opzione di aggiornamento per il proprio aggiornamento, considerare quanto segue:

  • È richiesta coerenza nei risultati delle query?

    SQL Server installa nuovi word breaker da usare per la ricerca full-text e semantica. I word breaker vengono utilizzati sia in fase di indicizzazione che di esecuzione delle query. Se non si ricompilano i cataloghi full-text, i risultati della ricerca potrebbero non essere coerenti. Se effettui una query full-text che esegue la ricerca di una frase divisa in modo diverso dal word breaker in una versione precedente di SQL Server rispetto a quella corrente, è possibile che si verifichi il mancato recupero di una riga o documento contenente la frase. Questo problema si verifica perché le frasi indicizzate sono state divise in base a una logica diversa da quella utilizzata dalla query. Per risolvere il problema, ripopolare (ricompilare) i cataloghi full-text con i nuovi word breaker in modo che il comportamento in fase di indicizzazione e di esecuzione delle query sia lo stesso. A tale scopo, è possibile scegliere l'opzione Ricompila oppure scegliere l'opzione Importa e avviare manualmente la ricompilazione.

  • Eventuale presenza di indici full-text compilati in colonne chiave full-text di tipo integer

    Con la ricompilazione vengono eseguite ottimizzazioni interne che in alcuni casi migliorano le prestazioni di esecuzione delle query dell'indice full-text aggiornato. In particolare, se si dispone di cataloghi full-text che contengono indici full-text per i quali la colonna chiave full-text della tabella di base è un tipo di dati integer, la ricompilazione consente di ottenere prestazioni ideali delle query full-text dopo l'aggiornamento. In questo caso, è consigliabile usare l'opzione Ricompila .

    Nota

    Per gli indici full-text, è consigliabile che la colonna utilizzata come chiave full-text sia un tipo di dati integer. Per altre informazioni, vedere Miglioramento delle prestazioni di indici full-text.

  • Qual è la priorità per rendere disponibile online la tua istanza del server?

    L'importazione o la ricompilazione durante l'aggiornamento richiede l'utilizzo di molte risorse della CPU ritardando in questo modo l'aggiornamento del resto dell'istanza del server e la disponibilità online dell'istanza stessa. Se è importante che l'istanza del server sia online il prima possibile e se si è disposti a eseguire un popolamento manuale dopo l'aggiornamento, Reset è adatto.

Garanzia di coerenza dei risultati delle query dopo l'importazione di un indice full-text

Se un catalogo full-text viene importato durante l'aggiornamento di un database SQL Server 2005 (9.x), potrebbero verificarsi mancate corrispondenze tra la query e il contenuto dell'indice full-text a causa di differenze nel comportamento dei vecchi e dei nuovi word breaker. In tal caso, per garantire una totale corrispondenza tra le query e il contenuto dell'indice full-text, utilizzare una delle opzioni seguenti:

  • Ricostruire il catalogo full-text che contiene l'indice full-text (ALTER FULLTEXT CATALOGnome_catalogo REBUILD)

  • Eseguire una popolazione completa sull'indice full-text (ALTER FULLTEXT INDEX ON nome_tabella START FULL POPULATION).

Per ulteriori informazioni sui word breaker, vedere Configurare e gestire word breaker e stemmer per la ricerca (SQL Server).

Aggiorna i file delle parole non significative agli elenchi di esclusione.

Quando si aggiorna un database da SQL Server 2005 (9.x), i file delle parole non significative non vengono più utilizzati. Tuttavia, i vecchi file di parole non significative sono archiviati nella cartella FTDATA\ FTNoiseThesaurusBak e possono essere utilizzati in seguito durante l’aggiornamento o la creazione dei corrispondenti stoplists di SQL Server.

Dopo l'aggiornamento da SQL Server 2005 (9.x):

  • Se nell'installazione di SQL Server 2005 (9.x) non hai mai aggiunto, modificato o eliminato file di parole non significative, l'elenco di sistema dovrebbe soddisfare le tue esigenze.

  • Se i file di parole non significative sono stati modificati in SQL Server 2005 (9.x), tali modifiche vengono perse durante l'aggiornamento. Per ricreare tali aggiornamenti, devi rifare manualmente quelle modifiche nell'elenco di stop corrispondente. Per altre informazioni, vedere ALTER FULLTEXT STOPLIST.

  • Se non si desidera applicare stopwords agli indici full-text, ad esempio se sono stati eliminati o cancellati i file di noise-word nell'installazione di SQL Server 2005 (9.x), è necessario disattivare lo stoplist per ciascun indice full-text aggiornato. Esegui l'istruzione Transact-SQL riportata di seguito (sostituendo database con il nome del database aggiornato e table con il nome della tabella):

    Use database;
    ALTER FULLTEXT INDEX ON table
       SET STOPLIST OFF;
    GO
    

    La clausola STOPLIST OFF rimuove l'applicazione di filtri alle parole non significative e attiva la popolazione della tabella senza filtrare le parole considerate non significative.

Backup e cataloghi full-text importati

Per i cataloghi full-text ricompilati o reimpostati durante l'aggiornamento (e per i nuovi cataloghi full-text), il catalogo full-text è un concetto logico e non risiede in un filegroup. Per eseguire il backup di un catalogo full-text, devi pertanto identificare ogni filegroup contenente un indice full-text del catalogo ed eseguirne il backup, uno alla volta. Per ulteriori informazioni, vedere Creazione e ripristino di copie di backup di indici e cataloghi full-text.

I cataloghi full-text importati da SQL Server 2005 (9.x) rappresentano ancora file di database nel proprio filegroup. Il processo di backup di SQL Server 2005 (9.x) per i cataloghi full-text si applica ancora, ad eccezione del fatto che il servizio MSFTESQL non esiste in SQL Server. Per informazioni sul processo di SQL Server 2005 (9.x), vedi Backup e ripristino di cataloghi full-text nella documentazione online di SQL Server 2005.

Eseguire la migrazione di indici full-text durante l'aggiornamento di un database

I file di database e i cataloghi full-text di una versione precedente di SQL Server possono essere aggiornati a un'istanza esistente mediante l'allegato, il ripristino o la procedura guidata di copia del database. Gli indici full-text di SQL Server 2005 (9.x) se presenti, vengono importati, reimpostati o ricompilati. La proprietà del server upgrade_option consente di controllare l'opzione di aggiornamento full-text usata dall'istanza del server durante questi aggiornamenti del database.

Una volta collegato, ripristinato o copiato un database di SQL Server 2005 (9.x) in un’istanza più recente, il database viene reso immediatamente disponibile e viene aggiornato automaticamente. A seconda della quantità di dati indicizzati, l'importazione può richiedere diverse ore e la ricompilazione può richiedere fino a dieci volte più tempo. Si noti inoltre che quando l'opzione di aggiornamento è impostata su "importazione", se un catalogo full-text non è disponibile, gli indici full-text associati vengono ricompilati.

Per modificare il comportamento dell'aggiornamento full-text in un'istanza del server

Considerazioni sul ripristino di un catalogo full-text di SQL Server 2005 (9.x)

Un metodo di aggiornamento dei dati full-text da un database di SQL Server 2005 (9.x) consiste nel ripristinare il backup completo di un database in un’istanza più recente di SQL Server.

Durante l'importazione di un catalogo full-text di SQL Server 2005 (9.x), puoi eseguire il backup e ripristinare il file di database e di catalogo. Il comportamento è uguale a quello in SQL Server 2005 (9.x):

  • Il backup completo del database includerà il catalogo di testo completo. Per fare riferimento al catalogo full-text, usa il relativo nome file di SQL Server 2005 (9.x), sysft_+nome-catalogo.

  • Se il catalogo full-text è offline, il backup non verrà eseguito correttamente.

Per ulteriori informazioni sul backup e il ripristino dei cataloghi full-text di SQL Server 2005 (9.x), vedere Backup e ripristino Full-Text - Cataloghi e indici e Backup e ripristino file e Full-Text - Cataloghi nella documentazione online di SQL Server 2005 (9.x).

Quando viene ripristinato il database in un’istanza più recente di SQL Server, viene creato un nuovo file di database per il catalogo full-text. Il nome predefinito di questo file è ftrow_nome-catalogo.ndf. Se ad esempio nome-catalogo è cat1, il nome predefinito del database di SQL Server sarà ftrow_cat1.ndf. Se però il nome predefinito è già utilizzato nella directory di destinazione, il nome del nuovo file di database sarà ftrow_nome-catalogo{GUID}.ndf, dove GUID è l'identificatore univoco globale del nuovo file.

Dopo l'importazione dei cataloghi, e sys.database_filessys.master_files vengono aggiornati per rimuovere le voci del catalogo e la path colonna in sys.fulltext_catalogs è impostata su NULL.

Per eseguire il backup di un database

Per ripristinare un backup del database

Esempio

Nell'esempio seguente viene utilizzata la clausola MOVE nell'istruzione RESTORE per ripristinare un database di SQL Server 2005 (9.x) denominato ftdb1. I file di database, di log e di catalogo di SQL Server 2005 (9.x) vengono spostati nei nuovi percorsi nell'istanza del server di SQL Server, come segue:

  • Il file di database, ftdb1.mdf, viene spostato in C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • Il file di log, ftdb1_log.ldf, viene spostato in una directory di log nell'unità disco di log, unità_log:\directory_log\ftdb1_log.ldf.

  • I file di catalogo che corrispondono al catalogo sysft_cat90 vengono spostati in C:\temp. Dopo essere stati importati, gli indici full-text vengono automaticamente posizionati in un file di database, C:\ftrow_sysft_cat90.ndf, e C:\temp verrà eliminato.

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';

Collegare un database di SQL Server 2005

In SQL Server 2008 (10.0.x) e versioni successive, un catalogo full-text è un concetto logico che fa riferimento a un gruppo di indici full-text. Il catalogo full-text è un oggetto virtuale che non appartiene ad alcun filegroup. Tuttavia, quando colleghi un database di SQL Server 2005 (9.x) contenente file di cataloghi full-text in un'istanza del server di SQL Server più recente, i file di catalogo vengono collegati dal percorso precedente insieme agli altri file del database, come in SQL Server 2005 (9.x).

Lo stato di ogni catalogo full-text collegato in SQL Server corrisponde a quello di quando il database era scollegato da SQL Server 2005 (9.x). Se il popolamento dell'indice full-text è stato sospeso mediante un'operazione di scollegamento, esso viene ripreso in SQL Server e l'indice full-text viene reso disponibile per la ricerca full-text.

Se SQL Server non riesce a trovare un file di catalogo full-text o se il file full-text è stato spostato durante l'operazione di collegamento senza specificare un nuovo percorso, il comportamento dipende dall'opzione di aggiornamento full-text selezionata. Se l'opzione di aggiornamento full-text è Importa o Ricompila, il catalogo full-text associato viene ricompilato. Se l'opzione di aggiornamento full-text è Reimposta, il catalogo full-text collegato viene reimpostato.

Per altre informazioni sullo scollegamento e il collegamento di un database, vedere Scollegamento e collegamento del database (SQL Server),CREATE DATABASE, sp_attach_db e sp_detach_db.