Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare le funzionalità più recenti, gli aggiornamenti della sicurezza e il supporto tecnico.
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.
Per configurare la ricerca full-text sono richiesti due passaggi di base:
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.
Per configurare la ricerca a testo pieno tramite una procedura guidata, vedere Usare la Procedura guidata di indicizzazione a testo pieno.
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.
Per informazioni sulla scelta della lingua delle colonne, vedere Scegliere una lingua durante la creazione di un indice full-text.
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.
È 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.
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.
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.
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.
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.
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiTraining
Modulo
Gestire una soluzione di Azure AI Search - Training
Mantenere le prestazioni, i costi e l'affidabilità delle soluzioni di Azure AI Search.
Certificazione
Microsoft Certified: Azure Cosmos DB Developer Specialty - Certifications
Scrivere query efficienti, creare criteri di indicizzazione, gestire e effettuare il provisioning delle risorse nell'API SQL e nell'SDK con Microsoft Azure Cosmos DB.
Documentazione
Ricerca full-text - SQL Server
La ricerca full-text consente a utenti e applicazioni di eseguire query full-text su dati di tipo carattere in tabelle del motore di database.
Funzionalità deprecate della ricerca full-text in SQL Server 2016 - SQL Server
Funzionalità deprecate della ricerca full-text in SQL Server 2016
Creare e gestire indici full-text - SQL Server
Questo argomento descrive come creare, compilare e gestire gli indici full-text in SQL Server.