Architettura della ricerca full-text
La ricerca full-text è supportata dal motore di ricerca full-text che svolge due ruoli, ovvero il supporto per l'indicizzazione e quello per l'esecuzione di query.
A partire da SQL Server 2008, l'architettura della ricerca full-text comprende i processi seguenti:
Processo di SQL Server (sqlservr.exe)
Nota
Il servizio MSFTESQL non esiste in SQL Server 2008 e versioni successive. Le attività full-text eseguite dal servizio MSFTESQL in SQL Server 2005 e versioni precedenti vengono eseguite attualmente dal processo di SQL Server.
Processo host del daemon di filtri (fdhost.exe)
Ai fini della protezione, a partire da SQL Server 2008 i filtri vengono caricati da processi separati definiti host del daemon di filtri. Un'istanza del server utilizza 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
fdhost.exe sostituisce il daemon di filtri del motore di ricerca full-text (msftefd.exe) di SQL Server 2005 e versioni precedenti.
I processi fdhost.exe vengono creati da un servizio dell'utilità di avvio di FDHOST (MSSQLFDLauncher) e vengono eseguiti con le credenziali di protezione dell'account del servizio dell'utilità di avvio di FDHOST. Il funzionamento delle query e dell'indicizzazione full-text dipende quindi dall'esecuzione di questo servizio. Per informazioni sull'impostazione dell'account di questo servizio, vedere Procedura: Impostazione dell'account del servizio per l'utilità di avvio di FDHOST (MSSQLFDLauncher) per la ricerca full-text (SQL Server Configuration Manager).
Tali processi contengono i componenti dell'architettura della ricerca full-text, riepilogati con le relative relazioni nell'illustrazione seguente. I componenti vengono descritti dopo l'illustrazione.
Processo di SQL Server
Nella ricerca full-text vengono utilizzati i componenti seguenti del processo di SQL Server:
Tabelle utente
Queste tabelle contengono i dati da inserire nell'indice full-text.
Gatherer full-text
Il gatherer full-text funziona con i thread della ricerca per indicizzazione full-text e consente di pianificare e gestire il popolamento degli indici full-text, nonché di monitorare i cataloghi full-text.
Nota
A partire da SQL Server 2008 un catalogo full-text è un oggetto virtuale che non appartiene ad alcun filegroup. Un catalogo full-text è un concetto logico che fa riferimento a un gruppo di indici full-text.
File del thesaurus
In questi file sono contenuti i sinonimi dei termini da cercare. Per ulteriori informazioni, vedere Configurazione del thesaurus.
Oggetti dell'elenco di parole non significative
Gli oggetti dell'elenco di parole non significative contengono un insieme di parole comuni che non risultano utili per la ricerca. Per ulteriori informazioni, vedere Parole non significative ed elenchi di parole non significative.
Nota
Gli oggetti dell'elenco di parole non significative sostituiscono i file di parole non significative presenti in SQL Server 2005 e versioni precedenti.
Query Processor di SQL Server
Query Processor compila ed esegue query SQL. Se una query SQL include una query di ricerca full-text, viene inviata al motore di ricerca full-text sia durante la compilazione che durante l'esecuzione. Il risultato della query viene messo a confronto con l'indice full-text. Per ulteriori informazioni, vedere Motore di ricerca full-text.
Motore di ricerca full-text
Il motore di ricerca full-text in SQL Server è attualmente completamente integrato con Query Processor. Il motore di ricerca full-text compila ed esegue query full-text. Come parte dell'esecuzione di query, il motore di ricerca full-text potrebbe ricevere input dal thesaurus e dall'elenco di parole non significative. In SQL Server 2008 e versioni successive il motore di ricerca full-text per SQL Server viene eseguito in Query Processor di SQL Server.
Writer di indici (indicizzatore)
Il writer di indici consente di costruire la struttura utilizzata per archiviare i token indicizzati.
Strumento di gestione del daemon di filtri
Lo strumento di gestione del daemon di filtri consente di monitorare lo stato dell'host del daemon di filtri per il motore di ricerca full-text.
Host del daemon di filtri
L'host del daemon di filtri è un processo avviato dal motore di ricerca full-text ed esegue i componenti della ricerca full-text seguenti, responsabili dell'accesso, del filtraggio e del word breaking di dati dalle tabelle, nonché del word breaking e dello stemming dell'input della query.
I componenti dell'host del daemon di filtri sono i seguenti:
Gestore di protocollo
Questo componente effettua il pull dei dati dalla memoria per un'ulteriore elaborazione e accede ai dati da una tabella utente in un database specificato. È inoltre responsabile della raccolta dei dati dalle colonne oggetto dell'indicizzazione full-text e del loro passaggio all'host del daemon di filtri che applicherà il filtro e il word breaker in base alle specifiche esigenze. .
Filtri
Alcuni tipi di dati richiedono l'applicazione di un filtro prima che i dati di un documento possano essere sottoposti all'indicizzazione full-text, inclusi i dati nelle colonne varbinary, varbinary(max), image o xml. Il filtro utilizzato per un documento dipende dal relativo tipo. Vengono infatti utilizzati filtri diversi per documenti di Microsoft Word (doc), documenti di Microsoft Excel (xls) e documenti XML (xml). Il filtro estrae blocchi di testo dal documento, rimuovendo la formattazione incorporata e mantenendo il testo e, potenzialmente, le informazioni sulla posizione del testo. Il risultato è un flusso di informazioni testuali. Per ulteriori informazioni, vedere Filtri di ricerca full-text.
Word breaker e stemmer
Un word breaker è un componente specifico della lingua che trova i delimitatori di parola in base alle regole lessicali di una determinata lingua (word breaking). Ogni word breaker è associato a uno stemmer specifico della lingua che coniuga i verbi ed esegue le espansioni flessionali. In fase di indicizzazione, l'host del daemon di filtri utilizza un word breaker e uno stemmer per eseguire l'analisi linguistica sui dati testuali di una colonna di tabella specificata. La lingua associata a una colonna di tabella nell'indice full-text determina il word breaker e lo stemmer utilizzati per l'indicizzazione della colonna. Per ulteriori informazioni, vedere Word breaker e stemmer.
Nota
Per informazioni su tutti i componenti linguistici full-text, vedere Configurazione dei componenti linguistici full-text.
Vedere anche