Začněte s Full-Text Search
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Databáze SQL Serveru jsou ve výchozím nastavení povolené fulltextové. Než ale budete moct spouštět fulltextové dotazy, musíte vytvořit úplný textový katalog a vytvořit fulltextový index v tabulkách nebo indexovaných zobrazeních, která chcete prohledávat.
Nastavení fulltextového vyhledávání ve dvou krocích
Pro nastavení fulltextového vyhledávání existují dva základní kroky:
- Vytvořte fulltextový katalog.
- Vytvořte fulltextový index pro tabulky nebo indexované zobrazení, které chcete prohledávat.
Každý fulltextový index musí patřit do fulltextového katalogu. Pro každý fulltextový index můžete vytvořit samostatný textový katalog nebo můžete k danému katalogu přidružit více fulltextových indexů. Fulltextový katalog je virtuální objekt a nepatří do žádné skupiny souborů. Katalog je logický koncept, který odkazuje na skupinu fulltextových indexů.
Poznámka
V těchto krocích se předpokládá, že jste při instalaci SQL Serveru nainstalovali volitelné součásti Full-Text vyhledávání. Pokud ne, musíte spustit instalaci SQL Serveru znovu, abyste je mohli přidat.
Nastavení fulltextového vyhledávání pomocí průvodce
Pokud chcete nastavit fulltextové vyhledávání pomocí průvodce, přečtěte si téma Použití průvodce indexováním Full-Text.
Nastavení fulltextového vyhledávání pomocí Transact-SQL
Následující dvoudílný příklad vytvoří fulltextový katalog s názvem AdvWksDocFTCat
v ukázkové databázi AdventureWorks a pak vytvoří fulltextový index v tabulce Document
v ukázkové databázi. Tento příkaz vytvoří fulltextový katalog ve výchozím adresáři zadaném během instalace SQL Serveru. Složka s názvem AdvWksDocFTCat
je ve výchozím adresáři.
Pokud chcete vytvořit fulltextový katalog s názvem
AdvWksDocFTCat
, příklad používá příkaz CREATE FULLTEXT CATALOG:USE AdventureWorks; GO CREATE FULLTEXT CATALOG AdvWksDocFTCat;
Další informace najdete v tématu Vytváření a správa katalogů Full-Text.
Před vytvořením fulltextového indexu v tabulce Dokument se ujistěte, že tabulka obsahuje jedinečný index s jedním sloupcem bez hodnoty null. Následující příkaz CREATE INDEX vytvoří jedinečný index
ui_ukDoc
na sloupci DocumentID tabulky Document:CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);
Pomocí následujícího příkazu DROP FULLTEXT INDEX přetáhněte existující fulltextový index do tabulky
Document
.DROP FULLTEXT INDEX ON Production.Document GO
Jakmile budete mít jedinečný klíč, můžete v tabulce
Document
vytvořit fulltextový index pomocí následujícího příkazu CREATE FULLTEXT INDEX.CREATE FULLTEXT INDEX ON Production.Document ( Document --Full-text index column name TYPE COLUMN FileExtension --Name of column that contains file type information Language 2057 --2057 is the LCID for British English ) KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index WITH CHANGE_TRACKING AUTO --Population type; GO
Sloupec TYPE definovaný v tomto příkladu určuje sloupec typu v tabulce, který obsahuje typ dokumentu v každém řádku sloupce Document (což je binární typ). Sloupec typu ukládá příponu souboru zadanou uživatelem – ".doc", ".xls", a tak dále – dokumentu v daném řádku. Modul Full-Text používá příponu souboru v daném řádku k vyvolání správného filtru, který se použije k analýze dat v daném řádku. Jakmile filtr zpracuje binární data řádku, analyzátor zadaných slov zpracuje obsah. (V tomto příkladu se používá oddělovač slov pro britskou angličtinu.) Další informace najdete v tématu Konfigurace a správa filtrů pro vyhledávání.
Další informace najdete v tématu Vytváření a správa indexů Full-Text.
Volba možností fulltextového indexu
Volba jazyka
Informace o výběru jazyka pro sloupce najdete v tématu Volba jazyka při vytváření indexu Full-Text.
Volba skupiny souborů
Proces vytváření fulltextového indexu je poměrně náročný na vstupně-výstupní operace. Souhrnně se skládá z čtení dat z SQL Serveru a následného šíření filtrovaných dat do fulltextového indexu. Osvědčeným postupem je najít fulltextový index ve skupině souborů databáze, který je nejvhodnější pro maximalizaci výkonu vstupně-výstupních operací, nebo vyhledejte fulltextové indexy v jiné skupině souborů na jiném svazku.
Volba fulltextového katalogu
Doporučujeme přidružit tabulky se stejnými vlastnostmi aktualizace (například malý počet změn a velký počet změn nebo tabulky, které se často mění během určitého dne) společně v rámci stejného fulltextového katalogu. Nastavením plánů populace fulltextového katalogu zůstanou fulltextové indexy synchronní s tabulkami, aniž by to mělo nepříznivý vliv na využití prostředků databázového serveru během období vysoké databázové aktivity.
Zvažte následující pokyny:
Pokud indexujete tabulku s miliony řádků, přiřaďte ji vlastnímu fulltextovému katalogu.
Vezměte v úvahu množství změn, ke kterým dochází v tabulkách, které jsou indexovány fulltextem, a také celkový počet řádků. Pokud se celkový počet řádků, které se mění, spolu s počtem řádků v tabulce přítomných během poslední fulltextové populace, představuje miliony řádků, přiřaďte tabulku k vlastnímu fulltextovému katalogu.
Přidružení jedinečného indexu
Vždy vyberte nejmenší jedinečný index, který je k dispozici pro jedinečný klíč celého textu. (4bajtový, na celočíselném základu založený index je optimální.) To výrazně snižuje prostředky vyžadované službou Microsoft Search ve file systému. Pokud je primární klíč velký (více než 100 bajtů), zvažte výběr jiného jedinečného indexu v tabulce (nebo vytvoření jiného jedinečného indexu) jako fulltextového jedinečného klíče. Jinak pokud velikost jedinečného klíče fulltextu překročí maximální povolenou velikost (900 bajtů), soubor fulltextu nebude moct pokračovat.
Přidružení seznamu stop
Seznam stop je seznam stop slov, také známý jako slova, která způsobují šum. Seznam stop je přidružený k jednotlivým fulltextovým indexům a slova v seznamu stop se použijí na fulltextové dotazy na daný index. Ve výchozím nastavení je seznam stop systému přidružený k novému fulltextovém indexu. Můžete také vytvořit a použít vlastní seznam stop.
Například následující CREATE FULLTEXT STOPLIST Transact-SQL příkaz vytvoří nový fulltext stoplist s názvem myStoplist zkopírováním ze seznamu stoplist systému:
CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO
Následující ALTER FULLTEXT STOPLIST Transact-SQL příkaz změní seznam stop s názvem myStoplist a přidá slovo "en", nejprve pro španělštinu a pak pro francouzštinu:
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';
GO
Další informace naleznete v části Konfigurace a správa stopslov a seznamů stopslov pro Full-Text Vyhledávání.
Aktualizace fulltextového indexu
Stejně jako běžné indexy SQL Serveru je možné fulltextové indexy automaticky aktualizovat, protože data jsou upravena v přidružených tabulkách. Toto je výchozí chování. Případně můžete ručně nebo v určených naplánovaných intervalech udržovat plnotextové indexy up-to-date. Naplnění fulltextového indexu může být časově náročné a náročné na prostředky. Aktualizace indexu se proto obvykle provádí jako asynchronní proces, který běží na pozadí a udržuje fulltextový index aktuální po úpravách základní tabulky.
Aktualizace fulltextového indexu ihned po každé změně základní tabulky je také náročná na prostředky. Proto pokud máte vysokou rychlost aktualizace, vložení nebo odstranění, může dojít k určitému snížení výkonu dotazů. Pokud k tomu dojde, zvažte plánování ručních aktualizací sledování změn, abyste měli přehled o mnoha změnách čas od času, a tak se vyhnuli konkurenci s dotazy na prostředky.
Pro více informací viz Naplnění Full-Text Indexů.
Další kroky
Jakmile nastavíte SQL Server Full-Text Search, jste připraveni spustit fulltextové dotazy. Další informace najdete v části Dotaz pomocí Full-Text Hledání.