Configurazione e gestione di word breaker e stemmer per la ricercaConfigure and Manage Word Breakers and Stemmers for Search

Word breaker e stemmer eseguono l'analisi linguistica su tutti i dati con indicizzazione full-text.Word breakers and stemmers perform linguistic analysis on all full-text indexed data. L'analisi linguistica esegue le due operazioni seguenti:Linguistic analysis does the following two things:

  • Trovare i delimitatori di parola (word breaking).Find word boundaries (word-breaking). Il word breaker identifica singole parole determinando i delimitatori di parola in base alle regole lessicali della lingua.The word breaker identifies individual words by determining where word boundaries exist based on the lexical rules of the language. Ogni parola ( token) viene inserita nell'indice full-text utilizzando una rappresentazione compressa per ridurre le relative dimensioni.Each word (also known as a token) is inserted into the full-text index using a compressed representation to reduce its size.

  • Coniugare i verbi (stemming).Conjugate verbs (stemming). Lo stemmer genera forme flessive di una particolare parola in base alle regole di quella lingua, ad esempio "running", "ran" e "runner" sono varie forme della parola "run".The stemmer generates inflectional forms of a particular word based on the rules of that language (for example, "running", "ran", and "runner" are various forms of the word "run").

I word breaker e gli stemmer sono specifici della linguaWord breakers and stemmers are language specific

Word breaker e stemmer sono specifici della lingua e le regole per l'analisi linguistica variano a seconda della lingua.Word breakers and stemmers are language specific, and the rules for linguistic analysis differ for different languages. L'uso di word breaker specifici di ogni lingua consente una maggiore accuratezza dei termini risultanti per le diverse lingue.Language-specific word breakers make the resulting terms more accurate for that language.

Per usare word breaker e stemmer forniti per tutte le lingue supportate da SQL Server, in genere non è necessario intraprendere alcuna azione.To use the word breakers and stemmers provided for all the languages supported by SQL Server, you typically don't have to take any action.

  • Se è disponibile un word breaker per la famiglia linguistica, ma non per una specifica lingua secondaria, viene utilizzata la lingua principale.Where there is a word breaker for the language family, but not for the specific sub-language, the major language is used. Il word breaker francese viene ad esempio utilizzato anche per la gestione di testo redatto in francese canadese.For example, the French word breaker is used to handle text that is French Canadian.
  • Se per una particolare lingua non sono disponibili word breaker, verrà utilizzato il word breaker della lingua neutra.If no word breaker is available for a particular language, the neutral word breaker is used. Con il word breaker della lingua neutra, le parole vengono spezzate in corrispondenza di caratteri neutri, ad esempio spazi e segni di punteggiatura.With the neutral word breaker, words are broken at neutral characters such as spaces and punctuation marks.

Ottenere l'elenco delle lingue supportateGet the list of supported languages

Per visualizzare l'elenco delle lingue supportate dalla ricerca full-text di SQL ServerSQL Server, usare l'istruzione Transact-SQLTransact-SQL seguente.To see the list of languages supported by SQL ServerSQL Server Full-Text Search, use the following Transact-SQLTransact-SQL statement. La presenza di una lingua nell'elenco indica che per tale lingua sono registrati word breaker.The presence of a language in this list indicates that word breakers are registered for the language.

SELECT * FROM sys.fulltext_languages

Ottenere l'elenco dei word breaker registrati Get the list of registered word breakers

Per potere usare i word breaker di una determinata lingua per la ricerca full-text, è necessario registrarli.For Full-Text Search to use the word breakers for a language, they must be registered. Per i word breaker registrati, anche le risorse linguistiche associate, ovvero stemmer, parole non significative e thesaurus, diventano disponibili per le operazioni di indicizzazione e query full-text.For registered word breakers, associated linguistic resources - stemmers, noise words (stopwords), and thesaurus files - also become available to full-text indexing and querying operations.

Per visualizzare l'elenco dei componenti word breaker registrati, usare l'istruzione seguente.To see the list of registered word breaker components, use the following statement.

EXEC sp_help_fulltext_system_components 'wordbreaker';  
GO  

Per altre opzioni e ulteriori informazioni, vedere sp_help_fulltext_system_components (Transact-SQL).For additional options and more info, see sp_help_fulltext_system_components (Transact-SQL).

Se si aggiunge o rimuove un word breakerIf you add or remove a word breaker

Se si aggiunge, rimuove o modifica un word breaker, è necessario aggiornare l'elenco degli identificatori delle impostazioni locali (LCID) di Microsoft Windows supportati per l'indicizzazione e le query full-text.If you add, remove, or alter a word breaker, you need to refresh the list of Microsoft Windows locale identifiers (LCIDs) that are supported for full-text indexing and querying. Per altre informazioni, vedere View or Change Registered Filters and Word Breakers.For more information, see View or Change Registered Filters and Word Breakers.

Impostare l'opzione default full-text language Set the default full-text language option

Per una versione localizzata di SQL ServerSQL Server, l'opzione della SQL ServerSQL Server lingua predefinita full-text viene impostata dal programma di installazione di sulla lingua del server, se esiste una corrispondenza appropriata.For a localized version of SQL ServerSQL Server, SQL ServerSQL Server Setup sets the default full-text language option to the language of the server if an appropriate match exists. Per le versioni non localizzate di SQL ServerSQL Server, l'opzione default full-text language è impostata sull'inglese.For a non-localized version of SQL ServerSQL Server, the default full-text language option is English.

Quando si crea o modifica un indice full-text, è possibile specificare una lingua diversa per ogni colonna di indicizzazione full-text.When you create or alter a full-text index, you can specify a different language for each full-text indexed column. Se per una colonna non è stata specificata alcuna lingua, il valore predefinito è quello dell'opzione di configurazione default full-text language.If no language is specified for a column, the default is the value of the configuration option default full-text language.

Nota

È necessario che a tutte le colonne elencate in una singola clausola di funzione per query full-text venga applicata la stessa lingua, a meno che nella query l'opzione LANGUAGE non sia specificata.All columns listed in a single full-text query function clause must use the same language, unless the LANGUAGE option is specified in the query. La lingua utilizzata per la colonna indicizzata full-text oggetto della query determina l'analisi linguistica eseguita sugli argomenti dei predicati (CONTAINS e FREETEXT) e delle funzioni (CONTAINSTABLE e FREETEXTTABLE) delle query full-text.The language used for the full-text indexed column being queried determines the linguistic analysis performed on arguments of the full-text query predicates (CONTAINS and FREETEXT) and functions (CONTAINSTABLE and FREETEXTTABLE).

Scegliere la lingua per una colonna indicizzata Choose the language for an indexed column

Quando si crea un indice full-text, è consigliabile specificare una lingua per ogni colonna indicizzata.When creating a full-text index, we recommend that you specify a language for each indexed column. Se non viene specificata alcuna lingua per una colonna, viene utilizzata quella predefinita di sistema.If a language is not specified for a column, the system default language is used. La lingua di una colonna determina il word breaker e lo stemmer utilizzati per l'indicizzazione di quella colonna.The language of a column determines which word breaker and stemmer are used for indexing that column. Anche il file del thesaurus di quella lingua verrà utilizzato dalle query full-text sulla colonna.Also, the thesaurus file of that language will be used by full-text queries on the column.

Quando si crea un indice full-text, è necessario considerare alcuni aspetti relativi alla scelta della lingua delle colonne.There are a couple of things to consider when choosing the column language for creating a full-text index. Tali considerazioni riguardano il modo in cui il testo viene suddiviso in token e quindi indicizzato dal motore di ricerca full-text.These considerations relate to how your text is tokenized and then indexed by Full-Text Engine. Per altre informazioni, vedere Scelta di una lingua durante la creazione di un indice full-text.For more information, see Choose a Language When Creating a Full-Text Index.

Per visualizzare la lingua del word breaker di colonne specifiche, eseguire l'istruzione seguente.To view the word breaker language of specific columns, run the following statement.

SELECT 'language_id' AS "LCID" FROM sys.fulltext_index_columns;

Per altre opzioni e ulteriori informazioni, vedere sys.fulltext_index_columns (Transact-SQL).For additional options and more info, see sys.fulltext_index_columns (Transact-SQL).

Risolvere i problemi relativi agli errori di timeout del word breaking Troubleshoot word-breaking time-out errors

Un errore di timeout del word breaking può verificarsi in diverse situazioni.A word-breaking time-out error may occur in a variety of situations. Per informazioni su queste situazioni e su come rispondere, vedere MSSQLSERVER_30053.or information about these situations and how to respond in each situation, see MSSQLSERVER_30053.

Informazioni sull'errore MSSQLSERVER_30053Info about the MSSQLSERVER_30053 error

ProprietàProperty ValoreValue
Nome prodottoProduct Name SQL ServerSQL Server
ID eventoEvent ID 3005330053
Origine eventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbolicoSymbolic Name FTXT_QUERY_E_WORDBREAKINGTIMEOUTFTXT_QUERY_E_WORDBREAKINGTIMEOUT
Testo del messaggioMessage Text Timeout del word breaking per la stringa di query full-text.Word breaking timed out for the full-text query string. Questo problema può verificarsi se il word breaker impiega molto tempo per elaborare la stringa di query full-text o se è in esecuzione un numero elevato di query nel server.This can happen if the wordbreaker took a long time to process the full-text query string, or if a large number of queries are running on the server. Provare a eseguire nuovamente la query in un carico ridotto.Try running the query again under a lighter load.

SpiegazioneExplanation

Un errore di timeout del word breaking può verificarsi nelle situazioni seguenti:A word-breaking timeout error can occur in the following situations:

  • Il word breaker per il linguaggio di query non è configurato correttamente. Le impostazioni del Registro di sistema, ad esempio, non sono corrette.The word breaker for the query language is configured incorrectly; for example, its registry settings are incorrect.

  • Il malfunzionamento del word breaker è dovuto a una stringa di query specifica.The word breaker malfunctions for a specific query string.

  • Il word breaker restituisce troppi dati per una stringa di query specifica.The word breaker returns too much data for a specific query string. I dati in eccesso sono considerati un potenziale attacco con sovraccarico del buffer e di conseguenza viene arrestato il processo del daemon di filtri (fdhost.exe) che ospita i servizi di word breaking.Excess data is treated as a potential buffer overrun attack, and shuts down the filter daemon process (fdhost.exe), which hosts the word-breaking services.

  • La configurazione del processo del daemon di filtri non è corretta.The filter daemon process configuration is incorrect.

    I problemi di configurazione più comuni sono rappresentati dalla scadenza della password o da criteri del dominio che impediscono l'accesso dell'account del daemon di filtri.The most common configuration problems are password expiration or a domain policy that prevents the filter daemon account from logging on.

  • Un carico di lavoro di query molto elevato è in esecuzione nell'istanza server. Ad esempio, il word breaker impiega molto tempo per elaborare la stringa della query full-text o un numero elevato di query sono in esecuzione nel server.A very heavy query workload is running on the server instance; for example, the word-breaker took a long time to process the full-text query string, or a large number of queries are running on the server. Si tratta tuttavia della causa meno probabile.Note that this is the least likely cause.

Azione dell'utenteUser Action

Selezionare l'azione dell'utente adatta alla probabile causa del timeout, come segue:Select the user action that is appropriate to the probable cause of the timeout, as follows:

Causa probabileProbable cause Azione utenteUser action
Il word breaker per il linguaggio di query non è configurato correttamente.The word breaker for the query language is configured incorrectly. Se si utilizza un word breaker di terze parti, è possibile che non sia stato registrato correttamente nel sistema operativo.If you are using a third-party word breaker it might be incorrectly registered with the operating system. In questo caso, registrare nuovamente il word breaker.In this case, re-register the word breaker. Per altre informazioni, vedere Ripristinare i word breaker usati dalla ricerca alla versione precedente.For more information, see Revert the Word Breakers Used by Search to the Previous Version.
Il malfunzionamento del word breaker è dovuto a una stringa di query specifica.The word breaker malfunctions for a specific query string. Se il word breaker è supportato da SQL ServerSQL Server, contattare il Servizio Supporto Tecnico Clienti Microsoft.If the word breaker is supported by SQL ServerSQL Server, contact Microsoft Customer Service and Support.
Il word breaker restituisce troppi dati per una stringa di query specifica.The word breaker returns too much data for a specific query string. Se il word breaker è supportato da SQL ServerSQL Server, contattare il Servizio Supporto Tecnico Clienti Microsoft.If the word breaker is supported by SQL ServerSQL Server, contact Microsoft Customer Service and Support.
La configurazione del processo del daemon di filtri non è corretta.The filter daemon process configuration is incorrect. Assicurarsi che venga utilizzata la password corrente e che i criteri di dominio non stiano impedendo l'accesso dell'account del daemon di filtri.Ensure that you are using the current password and that a domain policy is not preventing the filter daemon account from logging on.
Nell'istanza del server è in esecuzione un carico di lavoro molto elevato di query.A very heavy query workload is running on the server instance. Provare a eseguire nuovamente la query in un carico ridotto.Try running the query again under a lighter load.

Informazioni sull'impatto dei word breaker aggiornati Understand the impact of updated word breakers

Ogni versione di SQL ServerSQL Server include in genere nuovi word breaker con regole linguistiche migliori e maggiore accuratezza rispetto alle versioni precedenti.Each version of SQL ServerSQL Server typically includes new word breakers that have better linguistic rules and are more accurate than earlier word breakers. È possibile che il comportamento dei nuovi word breaker sia leggermente diverso da quello dei word breaker negli indici full-text importati da versioni precedenti di SQL ServerSQL Server.Potentially, the new word breakers might behave slightly differently from the word breakers in full-text indexes that were imported from previous versions of SQL ServerSQL Server.

Questo aspetto è rilevante se si importa un catalogo full-text al momento dell'aggiornamento di un database alla versione corrente di SQL ServerSQL Server.This is significant if a full-text catalog was imported when a database was upgraded to the current version of SQL ServerSQL Server. Una o più lingue utilizzate dagli indici full-text nel catalogo full-text potrebbero essere associate ai nuovi word breaker.One or more languages used by the full-text indexes in the full-text catalog might now be associated with new word breakers. Per altre informazioni, vedere Aggiornamento della ricerca full-text.For more information, see Upgrade Full-Text Search.

Vedere ancheSee Also

CREATE FULLTEXT INDEX (Transact-SQL) CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL) ALTER FULLTEXT INDEX (Transact-SQL)
Configurare e gestire parole non significative ed elenchi di parole non significative per la ricerca full-textConfigure and Manage Stopwords and Stoplists for Full-Text Search