Sdílet prostřednictvím


Konfigurace a správa rozdělovačů slov a stemmerů 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 je pro rodinu jazyků oddělovač slov, ale ne pro konkrétní podjazyk, 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.

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

Další informace najdete v tématu sp_help_fulltext_system_components.

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. Podrobnosti naleznete v tématu Zobrazení nebo změna registrovaných filtrů a dělení 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é soubor tesaurus daného jazyka používá 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;

Další informace najdete v sys.fulltext_index_columns.

Řešení problémů s chybami časového limitu při dělení slov

K chybě vypršení časového limitu při zpracování slov může dojít v různých situacích. Informace o těchto situacích a o tom, jak reagovat v každé situaci, najdete v tématu 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_VYČASOVANÍ_ROZDĚLENÍ_SLOV
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ů. 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 naleznete v tématu Použít starší verzi děličů slov pro vyhledávání (SQL Server Search).
Dělič slov nefunkční při určitém řetězci 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 chovat jinak než nástroje pro dělení slov v fulltextových indexech, které byly importovány 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í.