Sdílet prostřednictvím


Konfigurace & správy rozdělovačů slov & stemmers pro vyhledávání (SQL Server)

platí pro:SQL Serverazure SQL Database

Word breakers a stemmers provádí lingvistické analýzy všech fulltextových indexovaných dat. Lingvistická analýza provede následující dvě věci:

  • Najít slovní rozhraní (dělení slov). oddělovač slov identifikuje jednotlivá slova určením, kde existují hranice slov na základě lexikálních pravidel jazyka. Každé slovo (označované také jako token ) se vloží do fulltextového indexu pomocí komprimované reprezentace, aby se zmenšila jeho velikost.

  • konjugované slovesa (stemming). stemmer generuje inflexní formy konkrétního slova na základě pravidel daného jazyka (například "running", "ran" a "runner" jsou různé formy slova "run").

Dělitelé slov a stemmingové algoritmy jsou specifické pro daný jazyk

Nástroje pro dělení slov a kmenování jsou specifické pro jazyk a pravidla pro jazykovou analýzu se liší pro různé jazyky. Funkce pro dělení slov pro konkrétní jazyk zpřesní výsledné termíny pro daný jazyk.

Pokud chcete používat nástroje pro dělení slov a stemmery poskytované pro všechny jazyky podporované SQL Serverem, obvykle nemusíte provádět žádnou akci.

  • Kde existuje oddělovač slov pro řadu jazyků, ale ne pro konkrétní dílčí jazyk, se používá hlavní jazyk. Například francouzský oddělovač slov se používá ke zpracování textu, který je kanadská francouzština.
  • Pokud není pro určitý jazyk k dispozici žádný oddělovač slov, použije se neutrální oddělovač slov. S neutrálním oddělovačem slov jsou slova přerušena na neutrálních znamech, jako jsou mezery a interpunkční znaménka.

Získání seznamu podporovaných jazyků

Pokud chcete zobrazit seznam jazyků podporovaných službou SQL Server Full-Text Search, použijte následující příkaz Transact-SQL. Přítomnost jazyka v tomto seznamu značí, že jsou pro daný jazyk zaregistrované rozdělovače slov.

SELECT * FROM sys.fulltext_languages

Získání seznamu registrovaných rozdělovačů slov

Aby funkce Full-Text Hledat mohla používat nástroje pro dělení slov pro jazyk, musí být zaregistrované. Pro registrované nástroje pro dělení slov jsou přidružené lingvistické zdroje – stemmers, zastávková slova (stopwords) a soubory tezaurus – také k dispozici pro účely fulltextového indexování a dotazování.

Pokud chcete zobrazit seznam registrovaných součástí nástroje pro dělení slov, použijte následující příkaz.

EXEC sp_help_fulltext_system_components 'wordbreaker';  
GO  

Pro více možností a informací viz sp_help_fulltext_system_components (Transact-SQL).

Pokud přidáte nebo odeberete oddělovač slov

Pokud přidáte, odeberete nebo změníte oddělovač slov, budete muset aktualizovat seznam identifikátorů národního prostředí Systému Microsoft Windows (LCID), které jsou podporovány pro indexování a dotazování fulltextu. Další informace naleznete v části Zobrazení nebo změna registrovaných filtrů a oddělovačů slov.

Nastavte výchozí možnost jazyka pro celý text

Pro lokalizovanou verzi SQL Serveru nastaví instalační program SQL Serveru výchozí možnost fulltextového jazyka na jazyk serveru, pokud existuje odpovídající shoda. U nelokativované verze SQL Serveru je výchozí fulltextový jazyk možnost angličtina.

Při vytváření nebo změně fulltextového indexu můžete pro každý fulltext indexovaný sloupec zadat jiný jazyk. Pokud není pro sloupec zadán žádný jazyk, výchozí hodnota je hodnota možnosti konfigurace výchozí fulltextový jazyk.

Poznámka

Všechny sloupce uvedené v klauzuli funkce fulltextového dotazu musí používat stejný jazyk, pokud není v dotazu zadána možnost LANGUAGE. Jazyk použitý pro sloupec s fulltextovým indexem, na který se dotazujeme, určuje jazykovou analýzu prováděnou na argumentech predikátů fulltextového dotazu (CONTAINS a FREETEXT) a funkcí (CONTAINSTABLE a FREETEXTTABLE).

Volba jazyka indexovaného sloupce

Při vytváření fulltextového indexu doporučujeme zadat jazyk pro každý indexovaný sloupec. Pokud pro sloupec není zadaný jazyk, použije se výchozí jazyk systému. Jazyk sloupce určuje, který oddělovač slov a stemmer se používají k indexování daného sloupce. Také tezaurus daného jazyka bude používán pro fulltextové dotazy ve sloupci.

Při výběru jazyka sloupců pro vytvoření fulltextového indexu je potřeba vzít v úvahu několik věcí. Tyto aspekty souvisejí s tím, jak se text tokenizuje a pak indexuje pomocí modulu Full-Text. Další informace naleznete v tématu Volba jazyka při vytváření Full-Text indexu.

Pokud chcete zobrazit jazyk dělení slov pro konkrétní sloupce, spusťte následující příkaz.

SELECT language_id AS 'LCID' FROM sys.fulltext_index_columns;

Pro další možnosti a více informací viz sys.fulltext_index_columns (Transact-SQL).

Řešení chyb časového limitu při dělení slov

K chybě přerušení textu kvůli časovému limitu může dojít v různých situacích. nebo informace o těchto situacích a o tom, jak reagovat v každé situaci, viz MSSQLSERVER_30053.

Informace o chybě MSSQLSERVER_30053

Vlastnost Hodnota
Název produktu SQL Server
ID události 30053
Zdroj událostí MSSQLSERVER
Komponenta SQLEngine
Symbolický název FTXT_QUERY_E_WORDBREAKINGTIMEOUT
Text zprávy Pro řetězec fulltextového dotazu vypršel časový limit pro dělení slov. K tomu může dojít v případě, že zpracování řetězce fulltextového dotazu trvalo dlouhou dobu nebo pokud na serveru běží velký počet dotazů. Zkuste dotaz spustit znovu pod nižší zátěží.

Vysvětlení

K chybě vypršení časového limitu slova může dojít v následujících situacích:

  • Oddělovač slov pro dotazovací jazyk je nesprávně nakonfigurovaný; Například jeho nastavení registru není správné.

  • Dělič slov nefunkční při určitém řetězci dotazu.

  • Oddělovač slov vrací příliš mnoho dat pro konkrétní řetězec dotazu. Nadbytečná data se považují za potenciální útok na přetečení vyrovnávací paměti, což vede k vypnutí procesu démona filtru (fdhost.exe), který hostuje služby pro rozdělování slov.

  • Konfigurace procesu démona filtru je nesprávná.

    Nejběžnější problémy s konfigurací jsou vypršení platnosti hesla nebo zásady domény, které brání přihlášení účtu démona filtru.

  • Na instanci serveru běží velmi náročná zátěž dotazů; například oddělovači slov trvalo dlouho zpracovat řetězec fulltextového dotazu, nebo na serveru běží velký počet dotazů. Všimněte si, že to je nejméně pravděpodobná příčina.

Akce uživatele

Vyberte uživatelskou akci, která je vhodná pro pravděpodobnou příčinu vypršení časového limitu, následujícím způsobem:

Pravděpodobná příčina Akce uživatele
Oddělovač slov pro dotazovací jazyk je nesprávně nakonfigurovaný. Pokud používáte nástroj pro dělení slov třetí strany, může být nesprávně zaregistrován v operačním systému. V tomto případě znovu zaregistrujte dělič slov. Další informace najdete v tématu Vrácení rozdělovačů slov používaných vyhledáváním na předchozí verzi.
Dělení slov nefunguje u konkrétního řetězce dotazu. Pokud SQL Server podporuje dělení slov, obraťte se na zákaznickou službu a podporu Microsoftu.
Oddělovač slov vrací příliš mnoho dat pro konkrétní řetězec dotazu. Pokud SQL Server podporuje dělení slov, obraťte se na zákaznickou službu a podporu Microsoftu.
Konfigurace procesu démona filtru je nesprávná. Ujistěte se, že používáte aktuální heslo a že zásady domény nebrání účtu démona filtru v přihlášení.
Na instanci serveru běží velmi náročné úlohy dotazů. Zkuste dotaz spustit znovu pod nižší zátěží.

Vysvětlení dopadu aktualizovaných rozdělovačů slov

Každá verze SQL Serveru obvykle obsahuje nové nástroje pro dělení slov, které mají lepší jazyková pravidla a jsou přesnější než starší nástroje pro dělení slov. Nové nástroje pro dělení slov se můžou potenciálně chovat trochu jinak než v fulltextových indexech importovaných z předchozích verzí SQL Serveru.

To je důležité, pokud byl při upgradu databáze na aktuální verzi SQL Serveru importován fulltextový katalog. Jeden nebo více jazyků používaných fulltextovými indexy v fulltextovém katalogu teď může být spojen s novými oddělovači slov. Další informace naleznete v tématu Upgrade Full-Text Vyhledávání.

Viz také

CREATE FULLTEXT INDEX (Transact-SQL)
ZMĚNA FULLTEXT INDEXU (Transact-SQL)
Konfigurace a správa klíčových slov a seznamů zastavení pro Full-Text vyhledávání