Condividi tramite


Processo di indicizzazione e query full-text

Il componente di indicizzazione della ricerca full-text è responsabile del popolamento iniziale dell'indice full-text e del suo successivo aggiornamento al momento della modifica dei dati nelle tabelle con indicizzazione full-text. In Microsoft SQL Server 2005 l'architettura del meccanismo di raccolta full-text è stata migliorata allo scopo di rendere il processo di indicizzazione full-text più efficiente e assicurare un effettivo miglioramento delle prestazioni.

Processo di indicizzazione full-text

Quando viene iniziato un popolamento full-text, noto anche come ricerca per indicizzazione, il Motore di database inserisce grandi batch di dati in memoria e indica al servizio Microsoft Full-Text Engine for SQL Server (MSFTESQL) di iniziare l'indicizzazione. Il servizio MSFTESQL indicizza i dati di tipo carattere e i dati binari formattati contenuti in una o più colonne di una tabella. Tramite un componente gestore di protocollo, il motore full-text estrae dalla memoria i dati da sottoporre a ulteriore elaborazione al fine di creare un indice full-text.

Durante l'indicizzazione dei dati archiviati in una colonna varbinary(max) o image, il filtro, che implementa l'interfaccia IFilter, estrae testo in base al formato file specificato per tali dati, ad esempio Microsoft Word. I componenti filtro talvolta richiedono che i dati varbinary(max) o image vengano scritti nella directory temporanea dell'account del servizio, anziché essere inseriti in memoria.

Nell'ambito dell'elaborazione, i dati di testo raccolti vengono sottoposti a un word breaker per separare il testo in singoli token o parole chiave. La lingua utilizzata per la suddivisione in token viene specificata a livello di colonna o può essere identificata all'interno dei dati varbinary(max), image o xml dal componente filtro.

È possibile eseguire un'ulteriore elaborazione per rimuovere le parole non significative e normalizzare i token prima di archiviarli nell'indice full-text o in un frammento di indice.

Al termine di un popolamento, viene attivato un processo di unione conclusivo che associa i frammenti di indice in un singolo indice full-text master. Ciò consente prestazioni di query superiori poiché è necessario eseguire query solo sull'indice master anziché su alcuni frammenti di indice ed è possibile utilizzare statistiche di punteggio migliori per la classificazione della pertinenza.

[!NOTA] L'unione dei frammenti di indice nell'indice master può richiedere l'esecuzione di molte operazioni di I/O poiché è necessario leggere e scrivere grandi quantità di dati, ma ciò non blocca le query in entrata.

Processo di esecuzione di query full-text

Una query full-text inviata da un client arriva a Query Processor di SQL Server nel processo di SQL Server. Query Processor la passa al componente per le query full-text, che crea una struttura di comandi OLE DB e la invia al motore di ricerca full-text Microsoft per SQL Server (servizio MSFTESQL). Nel processo di MSFTESQL, Query Processor del motore di ricerca full-text elabora la query tramite i file del thesaurus e delle parole non significative, nonché i word breaker e gli stemmer. Dopo avere elaborato questa query, il servizio MSFTESQL restituisce un set di risultati al processo di SQL Server. Tale set di risultati può essere utilizzato per ulteriori operazioni di elaborazione o restituito al client.

Vedere anche

Concetti

Architettura della ricerca full-text

Altre risorse

Concetti di base sulla ricerca full-text

Guida in linea e informazioni

Assistenza su SQL Server 2005