Esecuzione della query con ricerca Full-TextQuery with Full-Text Search

Per scrivere query full-text, usare i predicati full-text CONTAINS e FREETEXT e le funzioni valutate a livello dei set di righe CONTAINSTABLE e FREETEXTTABLE con l'istruzione SELECT.Write full-text queries by using the full-text predicates CONTAINS and FREETEXT and the rowset-valued functions CONTAINSTABLE and FREETEXTTABLE with the SELECT statement. In questo argomento vengono presentati alcuni esempi di predicati e funzioni per consente di scegliere quelli più adatti.This topic provides examples of each predicate and function and helps you choose the best one to use.

  • Usare CONTAINS e CONTAINSTABLE per trovare i valori corrispondenti a parole e frasi.Use CONTAINS and CONTAINSTABLE to match words and phrases.
  • Usare FREETEXT e FREETEXTTABLE per trovare i valori corrispondenti al significato, ma non all'esatta formulazione delle parole.Use FREETEXT and FREETEXTTABLE to match the meaning, but not the exact wording.

Esempi di ogni predicato e funzione Simple examples of each predicate and function

Esempio - CONTAINSExample - CONTAINS

Nell'esempio seguente vengono trovati tutti i prodotti il cui prezzo è $80.99 e contenenti la parola "Mountain".The following example finds all products with a price of $80.99 that contain the word "Mountain".

USE AdventureWorks2012  
GO  

SELECT Name, ListPrice  
FROM Production.Product  
WHERE ListPrice = 80.99  
   AND CONTAINS(Name, 'Mountain')  
GO  

Esempio - FREETEXTExample - FREETEXT

Nell'esempio seguente viene eseguita la ricerca di tutti i documenti contenenti le parole associate a "vital", "safety" e "components".The following example searches for all documents that contain words related to vital, safety, components.

USE AdventureWorks2012  
GO  

SELECT Title  
FROM Production.Document  
WHERE FREETEXT (Document, 'vital safety components')  
GO  

Esempio - CONTAINSTABLEExample - CONTAINSTABLE

Nell'esempio seguente vengono restituiti l'ID della descrizione e la descrizione di tutti i prodotti per cui la colonna Description contiene la parola "aluminum" accanto alla parola "light" o "lightweight".The following example returns the description ID and description of all products for which the Description column contain the word "aluminum" near either the word "light" or the word "lightweight." Vengono restituite solo le righe con un valore di pertinenza maggiore o uguale a 2.Only rows with a rank value of 2 or higher are returned.

USE AdventureWorks2012  
GO  

SELECT FT_TBL.ProductDescriptionID,  
   FT_TBL.Description,   
   KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL INNER JOIN  
   CONTAINSTABLE (Production.ProductDescription,  
      Description,   
      '(light NEAR aluminum) OR  
      (lightweight NEAR aluminum)'  
   ) AS KEY_TBL  
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
WHERE KEY_TBL.RANK > 2  
ORDER BY KEY_TBL.RANK DESC;  
GO  

Esempio - FREETEXTTABLEExample- FREETEXTTABLE

Nell'esempio seguente viene estesa una query FREETEXTTABLE in modo che vengano restituite per prime le righe con valore di pertinenza maggiore e che la classificazione di ogni riga venga aggiunta all'elenco di selezione.The following example extends a FREETEXTTABLE query to return the highest ranked rows first and to add the ranking of each row to the select list. Per specificare la query, è necessario sapere che ProductDescriptionID è la colonna chiave univoca per la tabella ProductDescription .To specify the query, you must know that ProductDescriptionID is the unique key column for the ProductDescription table.

USE AdventureWorks2012  
GO  

SELECT KEY_TBL.RANK, FT_TBL.Description  
FROM Production.ProductDescription AS FT_TBL   
     INNER JOIN  
     FREETEXTTABLE(Production.ProductDescription, Description,  
                    'perfect all-around bike') AS KEY_TBL  
     ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY KEY_TBL.RANK DESC  
GO  

Di seguito viene riportata un'estensione della stessa query che restituisce solo le righe con valore di pertinenza maggiore o uguale a 10:Here is an extension of the same query that only returns rows with a rank value of 10 or greater:

USE AdventureWorks2012  
GO  

SELECT KEY_TBL.RANK, FT_TBL.Description  
FROM Production.ProductDescription AS FT_TBL   
     INNER JOIN  
     FREETEXTTABLE(Production.ProductDescription, Description,  
                    'perfect all-around bike') AS KEY_TBL  
     ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
WHERE KEY_TBL.RANK >= 10  
ORDER BY KEY_TBL.RANK DESC  
GO  

Selezionare il predicato o la funzione più adattaPick the best predicate or function

CONTAINS/CONTAINSTABLE e FREETEXT/FREETEXTTABLE sono utili per vari tipi di corrispondenza.CONTAINS/CONTAINSTABLE and FREETEXT/FREETEXTTABLE are useful for different kinds of matching. La tabella seguente consente di scegliere il predicato o la funzione più idonea per la query.The following table helps you to choose the best predicate or function for your query.

Per alcuni esempi, vedere Esempi di ogni predicato e funzione ed Esempi di tipi di ricerca specifici.For examples, see Simple examples of each predicate and function and Examples of specific types of searches. Vedere anche Ricerche possibili.Also see What you can search for.

CONTAINS/CONTAINSTABLECONTAINS/CONTAINSTABLE FREETEXT/FREETEXTTABLEFREETEXT/FREETEXTTABLE
Tipo di queryType of query Trova i valori corrispondenti di parole e frasi singole con un livello di corrispondenza esatto o fuzzy (meno preciso).Match single words and phrases with precise or fuzzy (less precise) matching. Trova i valori corrispondenti al significato, ma non all'esatta formulazione, di parole, frasi o periodi specificati (stringa free-text).Match the meaning, but not the exact wording, of specified words, phrases or sentences (the freetext string).

Vengono generate corrispondenze se nell'indice full-text di una colonna specificata viene trovato un qualsiasi termine o formato di un qualsiasi termine.Matches are generated if any term or form of any term is found in the full-text index of a specified column.
Altre opzioni queryMore query options È possibile specificare la prossimità delle parole all'interno di una certa distanza una dall'altra.You can specify the proximity of words within a certain distance of one another.

È possibile definire la restituzione di corrispondenze ponderate.You can return weighted matches.

È possibile usare un'operazione logica per combinare le condizioni di ricerca.You can use logical operation to combine search conditions. Per altre informazioni, vedere Uso degli operatori booleani (AND, OR e NOT) più avanti in questo argomento.For more info, see Using Boolean operators (AND, OR, and NOT) later in this topic.
N/aN/a

Confrontare predicati e funzioniCompare predicates and functions

I predicati CONTAINS/FREETEXT e le funzioni valutate a livello dei set di righe CONTAINSTABLE/FREETEXTTABLE hanno sintassi e opzioni diverse.The predicates CONTAINS/FREETEXT and the rowset-valued functions CONTAINSTABLE/FREETEXTTABLE have different syntax and options. La tabella seguente consente di scegliere il predicato o la funzione più idonea per la query.The following table helps you to choose the best predicate or function for your query.

Per alcuni esempi, vedere Esempi di ogni predicato e funzione ed Esempi di tipi di ricerca specifici.For examples, see Simple examples of each predicate and function and Examples of specific types of searches. Vedere anche Ricerche possibili.Also see What you can search for.

PredicatiPredicates
CONTAINS/FREETEXTCONTAINS/FREETEXT
FunzioniFunctions
CONTAINSTABLE/FREETEXTTABLECONTAINSTABLE/FREETEXTTABLE
UtilizzoUsage Usare i predicati full-text CONTAINS e FREETEXT nella clausola WHERE o HAVING di un'istruzione SELECT.Use the full-text predicates CONTAINS and FREETEXT in the WHERE or HAVING clause of a SELECT statement. Usare le funzioni full-text CONTAINSTABLE e FREETEXTTABLE come un normale nome di tabella nella clausola FROM di un'istruzione SELECT.Use the full-text functions CONTAINSTABLE and FREETEXTTABLE functions like a regular table name in the FROM clause of a SELECT statement.
Altre opzioni queryMore query options È possibile combinare i predicati e le funzioni con altri predicati Transact-SQLTransact-SQL, ad esempio LIKE e BETWEEN.You can combine them with any of the other Transact-SQLTransact-SQL predicates, such as LIKE and BETWEEN.

È possibile specificare una sola colonna, un elenco di colonne o tutte le colonne della tabella in cui eseguire la ricerca.You can specify either a single column, a list of columns, or all columns in the table to be searched.

Facoltativamente, è possibile specificare la lingua le cui risorse verranno usate dalla query full-text specificata per il word breaking e lo stemming, le ricerche nel thesaurus e la rimozione di parole non significative.Optionally, you can specify the language whose resources will be used by the full-text query for word breaking and stemming, thesaurus lookups, and noise-word removal.
È necessario specificare la tabella di base per la ricerca quando si usa una di queste funzioni.You have to specify the base table to search when you use either of these functions. Come con i predicati, è possibile specificare una singola colonna, un elenco di colonne o tutte le colonne della tabella in cui eseguire la ricerca e, facoltativamente, la lingua le cui risorse verranno utilizzate dalla query full-text specificata.As with the predicates, you can specify a single column, a list of columns, or all columns in the table to be searched, and optionally, the language whose resources will be used by given full-text query.

In genere, i risultati del predicato CONTAINSTABLE o FREETEXTTABLE devono essere uniti in join alla tabella di base.Typically you have to join the results of CONTAINSTABLE or FREETEXTTABLE with the base table. A questo scopo, è necessario conoscere il nome della colonna chiave univoca.To do this, you have to know the unique key column name. Questa colonna, presente in ogni tabella abilitata per la funzionalità full-text, viene usata per applicare righe univoche per la tabella (colonna chiave univoca).This column, which occurs in every full-text enabled table, is used to enforce unique rows for the table (the uniquekey column). Per altre informazioni sulla colonna chiave, vedere Creare e gestire indici full-text.For more info about the key column, see Create and Manage Full-Text Indexes.
RisultatiResults I predicati CONTAINS e FREETEXT restituiscono un valore TRUE o FALSE che indica se una determinata riga corrisponde alla query full-text.The CONTAINS and FREETEXT predicates return a TRUE or FALSE value that indicates whether a given row matches the full-text query. Le righe corrispondenti vengono restituite nel set di risultati.Matching rows are returned in the result set. Queste funzioni restituiscono una tabella di zero, una o più righe corrispondenti alla query full-text.These functions return a table of zero, one, or more rows that match the full-text query. La tabella restituita contiene solo righe della tabella di base che corrispondono ai criteri di selezione specificati nella condizione della ricerca full-text della funzione.The returned table contains only rows from the base table that match the selection criteria specified in the full-text search condition of the function.

Le query che usano una di queste funzioni restituiscono un valore di classificazione per pertinenza (RANK) e una chiave full-text (KEY) per ogni riga, come illustrato di seguito:Queries that use one of these functions also return a relevance ranking value (RANK) and full-text key (KEY) for each row returned, as follows
  • Colonna KEY.KEY column. La colonna KEY restituisce valori univoci delle righe restituite.The KEY column returns unique values of the returned rows. Può essere utilizzata per specificare i criteri di selezione.The KEY column can be used to specify selection criteria.
  • Colonna RANK.RANK column. La colonna RANK restituisce un valore di pertinenza per ogni riga che indica il livello di corrispondenza tra la riga e i criteri di selezione.The RANK column returns a rank value for each row that indicates how well the row matched the selection criteria. Maggiore è il valore di pertinenza del testo o del documento in una riga, maggiore sarà la pertinenza della riga per una determinata query full-text.The higher the rank value of the text or document in a row, the more relevant the row is for the given full-text query. Si noti che è possibile classificare in modo identico righe diverse.Note that different rows can be ranked identically. È possibile limitare il numero di corrispondenze da restituire specificando il parametro top_n_by_rank facoltativo.You can limit the number of matches to be returned by specifying the optional top_n_by_rank parameter. Per altre informazioni, vedere Limitare i risultati della ricerca con RANK.For more information, see Limit Search Results with RANK.
Opzioni aggiuntiveAdditional options È possibile utilizzare un nome in quattro parti nel predicato CONTAINS o FREETEXT per eseguire query di colonne con indicizzazione full-text delle tabelle di destinazione in un server collegato.You can use a four-part name in the CONTAINS or FREETEXT predicate to query full-text indexed columns of the target tables on a linked server. Per preparare un server remoto alla ricezione di query full-text, creare un indice full-text delle tabelle di destinazione e delle colonne nel server remoto, quindi aggiungere il server remoto come server collegato.To prepare a remote server to receive full-text queries, create a full-text index on the target tables and columns on the remote server and then add the remote server as a linked server. N/aN/a
Altre informazioniMore info Per altre informazioni sulla sintassi e sugli argomenti di questi predicati, vedere CONTAINS e FREETEXT.For more info about the syntax and arguments of these predicates, see CONTAINS and FREETEXT. Per altre informazioni sulla sintassi e sugli argomenti di queste funzioni, vedere CONTAINSTABLE e FREETEXTTABLE.For more info about the syntax and arguments of these functions, see CONTAINSTABLE and FREETEXTTABLE.

Ricerche possibili What you can search for

Nella tabella seguente vengono descritti i tipi di parole o frasi che è possibile cercare.The following table describes the types of words and phrases that you can search for.

Forma del termine di queryQuery-term form DescriptionDescription Supportata daSupported by
Una o più parole o frasi specificheOne or more specific words or phrases
(termine semplice)(simple term)
Ad esempio, "croissant" è una parola, mentre "caffè macchiato" è una frase.For example, "croissant" is a word, and "café au lait" is a phrase. Le parole e le frasi di questo tipo vengono definite termini semplici.Words and phrases such as these are called simple terms.

Nella ricerca full-text una parola (o token) è una stringa i cui limiti vengono identificati da word breaker appropriati, in base alle regole linguistiche della lingua specificata.In full-text search, a word (or token) is a string whose boundaries are identified by appropriate word breakers, following the linguistic rules of the specified language. Una frase valida è costituita da più parole, separate o non separate da segni di punteggiatura.A valid phrase consists of multiple words, with or without any punctuation marks between them.

Per altre informazioni, vedere Ricerca di parole o frasi specifiche (termine semplice)più avanti in questo argomento.For more information, see Searching for Specific word or Phrase (Simple Term), later in this topic.
CONTAINS e CONTAINSTABLE consentono di cercare una corrispondenza esatta per la frase.CONTAINS and CONTAINSTABLE look for an exact match for the phrase.

FREETEXT e FREETEXTTABLE consentono di suddividere la frase in parole separate.FREETEXT and FREETEXTTABLE break up the phrase into separate words.
Parola o frase in cui le parole iniziano con il testo specificatoA word or a phrase where the words begin with specified text
(termine di prefisso)(prefix term)
Per un singolo termine di prefisso, qualsiasi parola che inizia con il termine specificato farà parte del set di risultati.For a single prefix term, any word starting with the specified term will be part of the result set. Ad esempio, il termine "auto" corrisponde ad "automatico", "automobile" e così via.For example, the term "auto" matches "automatic", "automobile", and so forth.

Nel caso di una frase, ogni parola all'interno della frase viene considerata un termine di prefisso.For a phrase, each word within the phrase is considered to be a prefix term. Il termine "tras auto*", ad esempio, corrisponde a "trasmissione automatica" e a "trasduttore automobile", ma non a "trasmissione motore automatica".For example, the term "auto tran*" matches "automatic transmission" and "automobile transducer", but it does not match "automatic motor transmission".

Un termine di prefisso fa riferimento a una stringa aggiunta davanti a una parola per produrre una parola derivata o una forma inflessa.A prefix term refers to a string that is affixed to the front of a word to produce a derivative word or an inflected form.

Per altre informazioni, vedere Esecuzione di ricerche di prefissi (termine di prefisso)più avanti in questo argomento.For more information, see Performing Prefix Searches (Prefix Term), later in this topic.
CONTAINS e CONTAINSTABLECONTAINS and CONTAINSTABLE
Forme flessive di una parola specificaInflectional forms of a specific word
(termine di generazione - forma flessiva)(generation term - inflectional)
È possibile cercare, ad esempio, la forma flessiva della parola "guida".For example, search for the inflectional form of the word "drive". Se diverse righe della tabella contengono le parole "guida", "guide", "guidò", "guidando" e "guidato", tali parole vengono tutte incluse nel set di risultati, in quanto ognuna può essere generata in modo flessivo da "guida".If various rows in the table include the words "drive", "drives", "drove", "driving", and "driven", all would be in the result set because each of these can be inflectionally generated from the word drive.

Le forme flessive sono costituite dai diversi tempi e coniugazioni di un verbo oppure dalle forme singolare e plurale di un sostantivo.The inflectional forms are the different tenses and conjugations of a verb or the singular and plural forms of a noun.

Per altre informazioni, vedere Ricerca di forme flessive di una parola specifica (termine di generazione)più avanti in questo argomento.For more information, see Searching for the Inflectional Form of a Specific Word (Generation Term), later in this topic.
Per impostazione predefinita,FREETEXT e FREETEXTTABLE consentono di cercare le forme flessive di tutte le parole specificate.FREETEXT and FREETEXTTABLE look for inflectional terms of all specified words by default.

CONTAINS e CONTAINSTABLE supportano un argomento INFLECTIONAL facoltativo.CONTAINS and CONTAINSTABLE support an optional INFLECTIONAL argument.
Sinonimi di una parola specificaSynonymous forms of a specific word
(termine di generazione - thesaurus)(generation term - thesaurus)
Se viene aggiunta, ad esempio, una voce quale "{macchina, automobile, camion, furgone}" a un thesaurus, è possibile cercare la forma del thesaurus della parola "macchina".For example, if an entry, "{car, automobile, truck, van}", is added to a thesaurus, you can search for the thesaurus form of the word "car". Il set di risultati includerà tutte le righe della tabella in cui viene eseguita la query che contengono le parole "automobile", "camion", "furgone" o "macchina", in quanto ciascuna di queste parole appartiene al set di espansione dei sinonimi relativo alla parola "macchina".All rows in the table queried that include the words "automobile", "truck", "van", or "car", appear in the result set because each of these words belong to the synonym expansion set containing the word "car".

Un thesaurus definisce i sinonimi specificati dall'utente per i termini.A thesaurus defines user-specified synonyms for terms.

Per informazioni sulla struttura dei file del thesaurus, vedere Configurare e gestire i file del thesaurus per la ricerca full-text.For information about the structure of thesaurus files, see Configure and Manage Thesaurus Files for Full-Text Search.
FREETEXT e FREETEXTTABLE il thesaurus per impostazione predefinita.FREETEXT and FREETEXTTABLE use the thesaurus by default.

CONTAINS e CONTAINSTABLE supportano un argomento THESAURUS facoltativo.CONTAINS and CONTAINSTABLE support an optional THESAURUS argument.
Una parola o frase vicina a un'altra parola o fraseA word or phrase close to another word or phrase
(termine di prossimità)(proximity term)
È possibile, ad esempio, trovare le righe in cui la parola "ghiaccio" è vicina alla parola "hockey" o in cui la frase "pattinaggio su ghiaccio" è vicina alla frase "hockey su ghiaccio".For example, you want to find the rows in which the word "ice" is near the word "hockey" or in which the phrase "ice skating" is near the phrase "ice hockey".

Un termine di prossimità indica parole o frasi vicine le une alle altre. È inoltre possibile specificare il numero massimo di termini non di ricerca che separano il primo e l'ultimo termine della ricerca.A proximity term indicates words or phrases that are near to each other., You can also specify the maximum number of non-search terms that separate the first and last search terms. È inoltre possibile cercare parole o frasi in qualsiasi ordine o nell'ordine in cui sono state specificate.In addition, you can search for words or phrases in any order, or in the order in which you specify them.

Per altre informazioni, vedere Cercare parole vicine a un'altra parola con NEAR.For more information, see Search for Words Close to Another Word with NEAR.
CONTAINS e CONTAINSTABLECONTAINS and CONTAINSTABLE
Parole o frasi che usano valori ponderatiWords or phrases using weighted values
(termine ponderato)(weighted term)
Ad esempio, in una query in cui vengono cercati più termini, è possibile assegnare a ogni parola un valore ponderato che ne indica l'importanza in relazione alle altre parole della condizione di ricerca.For example, in a query searching for multiple terms, you can assign each search word a weight value indicating its importance relative to the other words in the search condition. I risultati di questo tipo di query presentano prima le righe più rilevanti, in base al peso relativo assegnato alle parole della ricerca.The results for this type of query return the most relevant rows first, according to the relative weight you have assigned to search words. I set di risultati includono documenti o righe contenenti alcuni dei termini specificati (o contenuto tra di essi). Alcuni risultati, tuttavia, verranno considerati più pertinenti di altri a causa della variazione nei valori ponderati associati a termini cercati diversi.The result sets contain documents or rows containing any of the specified terms (or content between them); however, some results will be considered more relevant than others because of the variation in the weighted values associated with different searched terms.

Un valore ponderato indica il grado di importanza di ogni parola e frase all'interno di un set di parole e frasi.A weighting value indicates the degree of importance for each word and phrase within a set of words and phrases. Il valore 0,0 corrisponde al peso minimo, mentre 1.0 corrisponde al peso massimo.A weight value of 0.0 is the lowest, and a weight value of 1.0 is the highest.

Per altre informazioni, vedere Ricerca di parole o frasi tramite valori ponderati (termine ponderato)più avanti in questo argomento.For more information, see Searching for Words or Phrases Using Weighted Values (Weighted Term), later in this topic.
CONTAINSTABLECONTAINSTABLE

Esempi di tipi di ricerca specifici Examples of specific types of searches

Ricerca di parole o frasi specifiche (termine semplice) Search for a specific word or phrase (Simple Term)

È possibile usare CONTAINS, CONTAINSTABLE, FREETEXTo FREETEXTTABLE per cercare una frase specifica in una tabella.You can use CONTAINS, CONTAINSTABLE, FREETEXT, or FREETEXTTABLE to search a table for a specific phrase. Per eseguire una ricerca nella tabella ProductReview del database AdventureWorks2012AdventureWorks2012 per trovare tutti i commenti su un prodotto con la frase "learning curve", ad esempio, è possibile usare il predicato CONTAINS nel modo seguente:For example, if you want to search the ProductReview table in the AdventureWorks2012AdventureWorks2012 database to find all comments about a product with the phrase "learning curve", you could use the CONTAINS predicate as follows:

USE AdventureWorks2012  
GO  

SELECT Comments  
FROM Production.ProductReview  
WHERE CONTAINS(Comments, '"learning curve"')  
GO  

La condizione di ricerca, in questo caso "learning curve", può essere molto complessa ed essere costituita da uno o più termini.The search condition, in this case "learning curve", can be quite complex and can be composed of one or more terms.

Ricerca di una parola con un prefisso (termine di prefisso) Search for a word with a prefix (Prefix Term)

È possibile usare CONTAINS o CONTAINSTABLE per cercare parole o frasi con un prefisso specificato.You can use CONTAINS or CONTAINSTABLE to search for words or phrases with a specified prefix. Vengono restituite tutte le voci nella colonna che contengono testo che inizia con il prefisso specificato.All entries in the column that contain text beginning with the specified prefix are returned. È possibile cercare, ad esempio, tutte le righe che contengono il prefisso top-, come in top``ple, top``pinge top.For example, to search for all rows that contain the prefix top-, as in top``ple, top``ping, and top. La query è la seguente:The query looks like this:

USE AdventureWorks2012  
GO  

SELECT Description, ProductDescriptionID  
FROM Production.ProductDescription  
WHERE CONTAINS (Description, '"top*"' )  
GO  

La query restituisce tutto il testo che corrisponde a quello specificato prima dell'asterisco ().All text that matches the text specified before the asterisk () is returned. Se il testo e l'asterisco non sono delimitati da virgolette doppie, come in CONTAINS (DESCRIPTION, 'top*'), la ricerca full-text non considera l'asterisco un carattere jolly.If the text and asterisk are not delimited by double quotation marks, as in CONTAINS (DESCRIPTION, 'top*'), full-text search does not consider the asterisk to be a wildcard..

Se il termine di prefisso è una frase, ogni token che la compone viene considerato come un termine di prefisso distintoWhen the prefix term is a phrase, each token making up the phrase is considered a separate prefix term. e vengono restituite tutte le righe contenenti parole che iniziano con tali prefissi.All rows that have words beginning with the prefix terms will be returned. Se viene specificato il termine di prefisso "pennelli gialli", ad esempio, vengono trovate le righe che contengono il testo "pennelli giallini", "pennellini giallini" o "pennelli gialli", ma non "pennelli sottili gialli".For example, the prefix term "light bread" will find rows with text of "light breaded," "lightly breaded," or "light bread," but it will not return "lightly toasted bread".

Ricerca di forme flessive di una parola specifica (termine di generazione) Search for inflectional forms of a specific word (Generation Term)

È possibile usare CONTAINS, CONTAINSTABLE, FREETEXTo FREETEXTTABLE per cercare tutti i diversi tempi e coniugazioni di un verbo o le forme sia singolare sia plurale di un sostantivo (ricerca di forme flessive) oppure i sinonimi di una parola specifica (ricerca thesaurus).You can use CONTAINS, CONTAINSTABLE, FREETEXT, or FREETEXTTABLE to search for all the different tenses and conjugations of a verb or both the singular and plural forms of a noun (an inflectional search) or for synonymous forms of a specific word (a thesaurus search).

Nell'esempio seguente vengono cercate tutte le forme del termine "piede" ("piede", "piedi" e così via) presenti nella colonna Comments della tabella ProductReview nel database AdventureWorks .The following example searches for any form of "foot" ("foot", "feet", and so on) in the Comments column of the ProductReview table in the AdventureWorks database.

USE AdventureWorks2012  
GO  

SELECT Comments, ReviewerName  
FROM Production.ProductReview  
WHERE CONTAINS (Comments, 'FORMSOF(INFLECTIONAL, "foot")')  
GO  

Nella ricerca full-text vengono usati gli stemmer, che consentono di cercare i diversi tempi e coniugazioni di un verbo o le forme sia singolare sia plurale di un sostantivo.Full-text search uses stemmers, which allow you to search for the different tenses and conjugations of a verb, or both the singular and plural forms of a noun. Per altre informazioni sui stemmer, vedere Configurare e gestire word breaker e stemmer per la ricerca.For more information about stemmers, see Configure and Manage Word Breakers and Stemmers for Search.

Ricerca di parole o frasi tramite valori ponderati (termine ponderato) Search for words or phrases using weighted values (Weighted Term)

È possibile usare CONTAINSTABLE per cercare parole o frasi e specificare un valore ponderato.You can use CONTAINSTABLE to search for words or phrases and specify a weighting value. Il peso, espresso come numero compreso tra 0,0 e 1,0, indica l'importanza di ogni parola o frase all'interno di un set di parole o frasi.Weight, measured as a number from 0.0 through 1.0, indicates the importance of each word and phrase within a set of words and phrases. Il valore 0,0 corrisponde al peso minimo, mentre il valore 1,0 corrisponde al peso massimo.A weight of 0.0 is the lowest, and a weight of 1.0 is the highest.

Nell'esempio seguente viene illustrata una query per la ricerca di tutti gli indirizzi dei clienti, tramite valori di ponderazione, in cui il testo che inizia con la stringa "Bay" contiene anche la parola "Street" o "View".The following example shows a query that searches for all customer addresses, using weights, in which any text beginning with the string "Bay" has either "Street" or "View". I risultati assegnano un livello di importanza superiore alle righe che contengono il numero maggiore di parole specificate.The results give a higher rank to those rows that contain more of the words specified.

USE AdventureWorks2012  
GO  

SELECT AddressLine1, KEY_TBL.RANK   
FROM Person.Address AS Address INNER JOIN  
CONTAINSTABLE(Person.Address, AddressLine1, 'ISABOUT ("Bay*",   
         Street WEIGHT(0.9),   
         View WEIGHT(0.1)  
         ) ' ) AS KEY_TBL  
ON Address.AddressID = KEY_TBL.[KEY]  
ORDER BY KEY_TBL.RANK DESC  
GO  

È possibile utilizzare un termine ponderato insieme a qualsiasi termine semplice, termine di prefisso, termine di generazione o termine di prossimità.A weighted term can be used in conjunction with any simple term, prefix term, generation term, or proximity term.

Uso di operatori booleani (AND, OR e NOT) Use Boolean operators (AND, OR, and NOT)

Il predicato CONTAINS e la funzione CONTAINSTABLE utilizzano le stesse condizioni di ricerca.The CONTAINS predicate and CONTAINSTABLE function use the same search conditions. Entrambi supportano la combinazione di più termini di ricerca tramite gli operatori booleani AND, OR e NOT per eseguire operazioni logiche.Both support combining several search terms by using Boolean operators - AND, OR, and NOT - to perform logical operations. È ad esempio possibile usare AND per trovare righe che contengono sia "latte" sia "New York-style bagel".You can use AND, for example, to find rows that contain both "latte" and "New York-style bagel". È possibile utilizzare AND NOT, ad esempio, per trovare le righe che contengono "bagel", ma non "cream cheese".You can use AND NOT, for example, to find the rows that contain "bagel" but do not contain "cream cheese".

Al contrario, FREETEXT e FREETEXTTABLE considerano i termini booleani come parole da cercare.In contrast, FREETEXT and FREETEXTTABLE treat the Boolean terms as words to be searched.

Per informazioni sulla combinazione di CONTAINS con altri predicati che usano gli operatori logici AND, OR e NOT, vedere Condizione di ricerca (Transact-SQL).For information about combining CONTAINS with other predicates that use the logical operators AND, OR, and NOT, see Search Condition (Transact-SQL).

EsempioExample

L'esempio seguente usa il predicato CONTAINS per cercare le descrizioni il cui ID sia diverso da 5 e contenenti le parole "Aluminum" e "spindle".The following example uses the CONTAINS predicate to search for descriptions in which the description ID is not equal to 5 and the description contains both the word "Aluminum" and the word "spindle." Nella condizione di ricerca viene utilizzato l'operatore booleano AND.The search condition uses the AND Boolean operator. In questo esempio viene usata la tabella ProductDescription del database AdventureWorks2012AdventureWorks2012.This example uses the ProductDescription table of the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012  
GO  

SELECT Description  
FROM Production.ProductDescription  
WHERE ProductDescriptionID <> 5 AND  
   CONTAINS(Description, 'aluminum AND spindle')  
GO  

Altre opzioni query More query options

Quando si scrivono query full-text, è anche possibile specificare le opzioni seguenti.When you write full-text queries, you can also specify the following options.

  • Lingua con l'opzione LANGUAGE.Language, with the LANGUAGE option. Molti termini di query dipendono in larga misura dal comportamento del word breaker.Many query terms depend heavily on word-breaker behavior. Per assicurarsi di utilizzare il word breaker (e lo stemmer) e il thesaurus corretti, è consigliabile specificare l'opzione LANGUAGE.To ensure that you are using the correct word breaker (and stemmer) and thesaurus file, we recommend that you specify the LANGUAGE option. Per altre informazioni, vedere Scegliere una lingua durante la creazione di un indice full-text.For more information, see Choose a Language When Creating a Full-Text Index.

  • Distinzione maiuscole/minuscole.Case sensitivity. Per le query di ricerca full-text non viene fatta distinzione tra maiuscole e minuscole.Full-text search queries are case-insensitive. La lingua giapponese, tuttavia, prevede più forme fonetiche basate sul concetto di normalizzazione ortografica simile alla mancanza di distinzione tra maiuscole e minuscole, ad esempio kana = senza distinzione.However, in Japanese, there are multiple phonetic orthographies in which the concept of orthographic normalization is akin to case insensitivity (for example, kana = insensitivity). Questo tipo di normalizzazione ortografica non è supportato.This type of orthographic normalization is not supported.

  • Parole non significative.Stopwords. Quando si definisce una query full-text, il motore di ricerca full-text ignora le parole non significative dai criteri di ricerca.When defining a full-text query, the Full-Text Engine discards stopwords (also called noise words) from the search criteria. Per parole non significative si intendono parole quali "circa", "con", "devo" e "cui" che possono ricorrere di frequente, ma che non hanno alcuna utilità nella ricerca di testo specifico.Stopwords are words such as "a," "and," "is," or "the," that can occur frequently but that typically do not help when searching for particular text. Le parole non significative vengono riunite in un elenco.Stopwords are listed in a stoplist. Ogni indice full-text è associato a un elenco di parole non significative specifico per determinare quali di queste parole omettere dalla query o dall'indice durante l'indicizzazione.Each full-text index is associated with a specific stoplist, which determines what stopwords are omitted from the query or the index at indexing time. Per altre informazioni, vedere Configurare e gestire parole non significative ed elenchi di parole non significative per la ricerca full-text.For more info, see Configure and Manage Stopwords and Stoplists for Full-Text Search.

  • Thesaurus.Thesaurus. Per impostazione predefinita, le query FREETEXT e FREETEXTTABLE utilizzano il thesaurus.FREETEXT and FREETEXTTABLE queries use the thesaurus by default. CONTAINS e CONTAINSTABLE supportano un argomento THESAURUS facoltativo.CONTAINS and CONTAINSTABLE support an optional THESAURUS argument. Per altre informazioni, vedere Configurare e gestire i file del thesaurus per la ricerca full-text.For more info, see Configure and Manage Thesaurus Files for Full-Text Search.

Controllo dei risultati di tokenizzazione Check the tokenization results

Dopo aver applicato una determinata combinazione di word breaker, thesaurus ed elenco di parole non significative a una query, è possibile visualizzare il risultato della tokenizzazione usando la DMV sys.dm_fts_parser.After you apply a given word breaker, thesaurus, and stoplist combination in a query, you can view the tokenization results by using the sys.dm_fts_parser dynamic management view. Per altre informazioni, vedere sys.dm_fts_parser (Transact-SQL).For more information, see sys.dm_fts_parser (Transact-SQL).

Vedere ancheSee Also

CONTAINS (Transact-SQL) CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL) FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
Creare query di ricerca full-text (Visual Database Tools) Create Full-Text Search Queries (Visual Database Tools)
Migliorare le prestazioni delle query full-textImprove the Performance of Full-Text Queries