Cenni preliminari sulla ricerca full-text

Le query full-text consentono di eseguire ricerche linguistiche rispetto ai dati di testo negli indici full-text utilizzando parole e frasi in base alle regole di una determinata lingua, ad esempio l'inglese o il giapponese. Le query full-text possono contenere semplici parole e frasi oppure forme diverse di una parola o frase.

La ricerca full-text può essere utilizzata in un'ampia gamma di scenari aziendali, ad esempio nel commercio elettronico per la ricerca di articoli in un sito Web, negli uffici legali per la ricerca di casi in un repository di dati legali oppure nei reparti delle risorse umane per l'abbinamento dei posti di lavoro disponibili ai curriculum vitae in archivio. Le attività di sviluppo e amministrazione di base della ricerca full-text sono equivalenti indipendentemente dagli scenari aziendali. In uno scenario aziendale, tuttavia, l'indice e le query full-text possono essere modificati in base agli obiettivi aziendali da raggiungere. È ad esempio probabile che per un'attività di commercio elettronico l'ottimizzazione delle prestazioni sia ritenuta più importante della classificazione dei risultati, dell'accuratezza delle chiamate (quante delle corrispondenze esistenti vengono effettivamente restituite da una query full-text) o del supporto di più lingue. Per un ufficio legale, la restituzione di ogni possibile occorrenza (richiamo totale delle informazioni), potrebbe invece essere la considerazione più importante.

Cenni preliminari sulla configurazione di un database per la ricerca full-text

Per qualsiasi scenario, un amministratore di database esegue i passaggi di base seguenti per configurare le colonne di tabella di un database per la ricerca full-text:

  1. Creazione di un catalogo full-text.

  2. In ogni tabella in cui eseguire la ricerca è necessario creare un indice full-text.

    1. Identificare ogni colonna di testo che si desidera includere nell'indice full-text.

    2. Se una determinata colonna contiene documenti archiviati come dati binari (dati varbinary(max) o image), è necessario specificare una colonna di tabella (la colonna del tipo) che identifichi il tipo di ogni documento nella colonna da indicizzare.

    3. Specificare la lingua che verrà utilizzata dalla ricerca full-text nei documenti nella colonna.

    4. Scegliere il meccanismo di rilevamento delle modifiche che si desidera utilizzare per l'indice full-text per rilevare le modifiche nella tabella di base e nelle relative colonne.

La ricerca full-text supporta più lingue grazie al supporto dei componenti linguisticiseguenti: word breaker e stemmer, elenchi di parole non significative e file del thesaurus. I file del thesaurus e, in alcuni casi, gli elenchi di parole non significative richiedono la configurazione da parte di un amministratore di database. Un determinato file del thesaurus supporta tutti gli indici full-text che utilizzano la lingua corrispondente. È inoltre possibile associare un determinato elenco di parole non significative al numero desiderato di indici full-text.

Per ulteriori informazioni, vedere Amministrazione della ricerca full-text.

Cenni preliminari sulle query full-text

Dopo l'aggiunta delle colonne a un indice full-text, le applicazioni e gli utenti possono eseguire query full-text sul testo nelle colonne. Queste query possono consentire la ricerca degli elementi seguenti:

  • Una o più parole o frasi specifiche (termine semplice)

  • Parola o frase in cui le parole iniziano con il testo specificato (termine di prefisso)

  • Forme flessive di una parola specifica (termine di generazione)

  • Una parola o frase vicina a un'altra parola o frase (termine vicino)

  • Sinonimi di una parola specifica (thesaurus)

  • Parole o frasi che utilizzano valori ponderati (termine ponderato)

Le query full-text utilizzano tutte un set ridotto di predicati (CONTAINS e FREETEXT) e funzioni (CONTAINSTABLE e FREETEXTTABLE) Transact-SQL. Tuttavia, gli obiettivi di ricerca di un determinato scenario aziendale influiscono sulla struttura esatta delle query full-text, ad esempio:

  • Commercio elettronico: ricerca di un prodotto in un sito Web

    SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
    
  • Assunzione di personale: ricerca di candidati con esperienza in SQL Server

    SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
    

Per ulteriori informazioni, vedere Esecuzione di query su SQL Server tramite la ricerca full-text.

Confronto tra LIKE e la ricerca full-text

Contrariamente alla ricerca full-text, il predicato Transact-SQL LIKE funziona unicamente con le corrispondenze di caratteri. Non è inoltre possibile utilizzare il predicato LIKE per eseguire query su dati binari formattati. Inoltre, l'esecuzione di una query LIKE su una grande quantità di dati di testo non strutturati è molto più lenta dell'esecuzione di una query full-text equivalente sugli stessi dati. Una query LIKE eseguita su milioni di righe di dati di testo può richiedere diversi minuti, mentre per una query full-text sugli stessi dati possono essere necessari pochi secondi al massimo, a seconda del numero di righe restituite.