Leggi in inglese

Condividi tramite


Inizia con la ricerca testuale completa

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

La funzionalità full-text è abilitata per impostazione predefinita nei database di SQL Server. Prima di poter eseguire query full-text, è necessario creare un catalogo full-text completo e un indice full-text nelle tabelle o nelle viste indicizzate in cui si vuole eseguire la ricerca.

Configurare la ricerca full-text in due passaggi

Per configurare la ricerca full-text sono richiesti due passaggi di base:

  1. Creare un catalogo di testo completo.
  2. Creare un indice full-text nelle tabelle o nelle viste indicizzate in cui eseguire la ricerca.

Ogni indice testo completo deve appartenere a un catalogo testo completo. È possibile creare un catalogo di testo separato per ogni indice full-text oppure associare più indici full-text a un determinato catalogo. Un catalogo full-text è un oggetto virtuale e non appartiene ad alcun filegroup. Il catalogo è un concetto logico che fa riferimento a un gruppo di indici full-text.

Nota

Questa procedura presuppone che siano stati installati i componenti facoltativi della ricerca full-text durante l'installazione di SQL Server. In caso contrario, è necessario eseguire di nuovo il programma di installazione di SQL Server per aggiungerli.

Configurare la ricerca full-text con una procedura guidata

Per configurare la ricerca a testo pieno tramite una procedura guidata, vedere Usare la Procedura guidata di indicizzazione a testo pieno.

Configurare la ricerca full-text con Transact-SQL

L'esempio in due parti seguente consiste nella creazione di un catalogo full-text denominato AdvWksDocFTCat nel database di esempio AdventureWorks e quindi nella creazione di un indice full-text nella tabella Document nel database di esempio. Questa istruzione crea il catalogo full-text nella directory predefinita specificata durante l'installazione di SQL Server. La cartella denominata AdvWksDocFTCat si trova nella directory predefinita.

  1. Per creare un catalogo full-text denominato AdvWksDocFTCat, nell'esempio viene usata un'istruzione CREATE FULLTEXT CATALOG :

    SQL
    USE AdventureWorks;  
    GO  
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;  
    

    Per altre informazioni, vedere Creare e gestire cataloghi full-text.

  2. Prima di creare un indice full-text nella tabella Document, assicurarsi che la tabella disponga di un indice univoco a singola colonna che non ammette valori Null. L'istruzione CREATE INDEX seguente consente di creare un indice univoco, ui_ukDoc, nella colonna DocumentID della tabella Document:

    SQL
    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);  
    
  3. Eliminare l'indice full-text esistente nella tabella Document usando l'istruzione DROP FULLTEXT INDEX seguente.

    SQL
    DROP FULLTEXT INDEX ON Production.Document
    GO
    
  4. Quando si dispone di una chiave univoca, è possibile creare un indice full-text nella tabella Document usando l'istruzione CREATE FULLTEXT INDEX seguente.

    SQL
    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  
    
    

    L'elemento TYPE COLUMN definito in questo esempio specifica la colonna del tipo nella tabella che contiene il tipo di documento in ciascuna riga della colonna 'Document' (che è di tipo binario). Nella colonna del tipo è archiviata l'estensione di file fornita dall'utente, ovvero "doc", "xls" e così via, del documento in una determinata riga. Il motore di ricerca full-text utilizza l'estensione file in una determinata riga per richiamare il filtro corretto da utilizzare per l'analisi dei dati di quella riga. Al termine dell'analisi dei dati binari della riga eseguita tramite il filtro, il word breaker specificato analizzerà il contenuto. (In questo esempio viene usato il word breaker per l'inglese britannico.) Per ulteriori informazioni, vedi Configurare e gestire filtri per la ricerca.

    Per altre informazioni, vedere Creare e gestire indici full-text.

Scegliere le opzioni per un indice di testo completo

Scegliere una lingua

Per informazioni sulla scelta della lingua delle colonne, vedere Scegliere una lingua durante la creazione di un indice full-text.

Scegliere un filegroup

Il processo di compilazione di un indice full-text richiede l'esecuzione di molte operazioni di I/O. In sintesi, consiste nella lettura di dati da SQL Server e quindi nella propagazione dei dati filtrati all'indice full-text. La procedura consigliata consiste nell'individuare l'indice full-text nel filegroup del database ideale per ottimizzare le prestazioni di I/O oppure gli indici full-text in un filegroup diverso in un altro volume.

Scegliere un catalogo full-text

È consigliabile associare nello stesso catalogo full-text le tabelle con caratteristiche di aggiornamento equivalenti, ad esempio un numero ridotto o elevato di modifiche oppure modifiche frequenti apportate a una determinata ora del giorno. Pianificando il popolamento del catalogo full-text, gli indici full-text mantengono la sincronizzazione con le tabelle senza influire negativamente sull'utilizzo delle risorse del server di database durante i periodi di elevata attività del database.

Considerare le linee guida seguenti:

  • Se stai indicizzando una tabella che include milioni di righe, assegnala al proprio catalogo full-text.

  • Considerare la quantità di modifiche apportate alle tabelle durante l'indicizzazione full-text, nonché il numero totale di righe. Se il numero totale di righe modificate, sommato al numero di righe della tabella presenti durante l'ultimo popolamento full-text, corrisponde a milioni di righe, assegna la tabella al proprio catalogo full-text.

Associare un indice univoco

Scegli sempre l'indice univoco più piccolo disponibile per la chiave univoca per il testo completo. (Un indice basato su valori interi a quattro byte è l'impostazione ottimale.) Ciò consente di ridurre notevolmente le risorse richieste dal servizio Microsoft Search nel file system. Se la chiave primaria è grande (oltre 100 byte), considera di scegliere un altro indice univoco nella tabella (o di crearne un altro) come chiave univoca a testo completo. In caso contrario, se le dimensioni della chiave univoca full-text superano il massimo consentito (900 byte), non sarà possibile procedere con il popolamento full-text.

Associare una stoplist

Una stoplist è un elenco di stopwords, anche conosciute come parole di rumore. Un stoplist è associato a ogni indice full-text e le parole in esso contenute sono applicate alle query full-text di quell'indice. Per impostazione predefinita, l'elenco di parole non significative di sistema è associato a un nuovo indice full-text. Puoi creare e usare il tuo stoplist personalizzato.

Ad esempio, l'istruzione Transact-SQL CREATE FULLTEXT STOPLIST seguente consente di creare un nuovo elenco di parole non significative full-text denominato myStoplist copiando dall'elenco di parole non significative di sistema:

SQL
CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;  
GO  

L'istruzione Transact-SQL ALTER FULLTEXT STOPLIST seguente modifica una stoplist denominata myStoplist, aggiungendo la parola "en", prima per lo spagnolo e poi per il francese:

SQL
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';  
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';  
GO  

Per ulteriori informazioni, consultare Configurare e gestire parole irrilevanti ed elenchi di parole irrilevanti per la ricerca full-text.

Aggiornare un indice full-text

Come i normali indici SQL Server, gli indici full-text possono essere aggiornati automaticamente alla modifica dei dati delle tabelle associate. Questo è il comportamento predefinito. In alternativa, è possibile aggiornare gli indici full-text manualmente o a intervalli pianificati specificati. Il popolamento di un indice full-text può richiedere molto tempo e risorse. L'aggiornamento dell'indice full-text viene pertanto eseguito di solito in background come processo asincrono in seguito alle modifiche apportate alla tabella di base.

Anche l'aggiornamento immediato di un indice full-text dopo ogni modifica apportata alla tabella di base può richiedere l'uso di molte risorse. Pertanto, se la frequenza con cui si eseguono aggiornamenti, inserimenti ed eliminazioni è elevata, è possibile notare un calo delle prestazioni delle query. In questo caso, prendere in considerazione la programmazione di aggiornamenti manuali per il tracciamento delle modifiche per tenere il passo con le numerose modifiche di tanto in tanto, anziché competere con le query per le risorse.

Per altre informazioni, vedere Compilare gli indici full-text.

Passaggi successivi

Dopo aver configurato la ricerca full-text di SQL Server, si è pronti per eseguire le query full-text. Per ulteriori informazioni, consultare Eseguire query con ricerca full-text.