Inizia con la ricerca testuale completa
Si applica a:SQL Server
Database SQL di Azure
Istanza 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:
- Creare un catalogo di testo completo.
- 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.
Per creare un catalogo full-text denominato
AdvWksDocFTCat
, nell'esempio viene usata un'istruzione CREATE FULLTEXT CATALOG :USE AdventureWorks; GO CREATE FULLTEXT CATALOG AdvWksDocFTCat;
Per altre informazioni, vedere Creare e gestire cataloghi full-text.
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:CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);
Eliminare l'indice full-text esistente nella tabella
Document
usando l'istruzione DROP FULLTEXT INDEX seguente.DROP FULLTEXT INDEX ON Production.Document GO
Quando si dispone di una chiave univoca, è possibile creare un indice full-text nella tabella
Document
usando l'istruzione CREATE FULLTEXT INDEX seguente.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:
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:
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.