A Full-Text Search használatának első lépései

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseKezelt Azure SQL-példány

Az SQL Server-adatbázisok alapértelmezés szerint teljes szövegesen engedélyezve vannak. A teljes szöveges lekérdezések futtatása előtt azonban létre kell hoznia egy teljes szöveges katalógust, és létre kell hoznia egy teljes szöveges indexet a keresendő táblákon vagy indexelt nézeteken.

Teljes szöveges keresés beállítása két lépésben

A teljes szöveges keresés beállításának két alapvető lépése van:

  1. Hozzon létre egy teljes szöveges katalógust.
  2. Hozzon létre egy teljes szöveges indexet a keresni kívánt táblákon vagy indexelt nézetben.

Minden teljes szöveges indexnek egy teljes szöveges katalógushoz kell tartoznia. Létrehozhat egy külön szövegkatalógust minden teljes szöveges indexhez, vagy több teljes szöveges indexet is társíthat egy adott katalógushoz. A teljes szöveges katalógus egy virtuális objektum, és nem tartozik egyetlen fájlcsoporthoz sem. A katalógus egy logikai fogalom, amely teljes szöveges indexek csoportjára hivatkozik.

Jegyzet

Ezek a lépések feltételezik, hogy az SQL Server telepítésekor telepítette az opcionális Full-Text Keresési összetevőket. Ha nem, a hozzáadásukhoz újra futtatnia kell az SQL Server telepítőjét.

Teljes szöveges keresés beállítása varázslóval

Ha varázslóval szeretne teljes szöveges keresést beállítani, olvassa el A Full-Text Indexelő varázsló használatacímű témakört.

Teljes szöveges keresés beállítása Transact-SQL

Az alábbi kétrészes példa létrehoz egy AdvWksDocFTCat nevű teljes szöveges katalógust az AdventureWorks mintaadatbázisban, majd létrehoz egy teljes szöveges indexet a mintaadatbázis Document tábláján. Ez az utasítás létrehozza a teljes szöveges katalógust az SQL Server beállítása során megadott alapértelmezett könyvtárban. A AdvWksDocFTCat nevű mappa az alapértelmezett könyvtárban található.

  1. A AdvWksDocFTCatnevű teljes szöveges katalógus létrehozásához a példa egy CREATE FULLTEXT CATALOG utasítást használ:

    USE AdventureWorks;  
    GO  
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;  
    

    További információ: Full-Text-katalógusok létrehozása és kezelése.

  2. Mielőtt teljes szöveges indexet hozhat létre a Dokumentum táblában, győződjön meg arról, hogy a tábla egyedi, egyoszlopos, nem null értékű indexet tartalmaz. Az alábbi CREATE INDEX utasítás létrehoz egy egyedi indexet, ui_ukDoca Dokumentum tábla DocumentID oszlopában:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);  
    
  3. A meglévő teljes szöveges index eltávolításához a Document táblából használja az alábbi DROP FULLTEXT INDEX utasítást.

    DROP FULLTEXT INDEX ON Production.Document
    GO
    
  4. Miután rendelkezik egy egyedi kulccsal, létrehozhat egy teljes szöveges indexet a Document táblában a következő TELJES SZÖVEGES INDEX létrehozása utasítással.

    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  
    
    

    Az ebben a példában definiált TYPE COLUMN a tábla azon típusoszlopát adja meg, amely a dokumentum típusát tartalmazza a Dokumentum oszlop minden sorában (amely bináris típusú). A típusoszlop egy adott sorban tárolja a dokumentum felhasználó által megadott fájlkiterjesztését – ".doc", ".xls" stb. A Full-Text motor egy adott sor fájlkiterjesztésével hívja meg a megfelelő szűrőt az adott sor adatainak elemzéséhez. Miután a szűrő elemezte a sor bináris adatait, a megadott szóhatároló elemzi a tartalmat. (Ebben a példában a brit angol szóválasztót használjuk.) További információ: Keresési szűrők konfigurálása és kezelése.

    További információ: Full-Text indexek létrehozása és kezelése.

A teljes szöveges index beállításainak kiválasztása

Nyelv kiválasztása

Az oszlopnyelv kiválasztásával kapcsolatos további információkért lásd: Nyelv kiválasztása Full-Text Index létrehozásakor.

Fájlcsoport kiválasztása

A teljes szöveges index létrehozásának folyamata meglehetősen intenzív I/O-igényes. Összefoglalva, az SQL Serverből származó adatok beolvasásából, majd a szűrt adatok teljes szöveges indexbe való propagálásából áll. Ajánlott eljárásként keresse meg a teljes szöveges indexet az adatbázis-fájlcsoportban, amely a legjobb az I/O-teljesítmény maximalizálásához, vagy a teljes szöveges indexek megkereséséhez egy másik fájlcsoportban egy másik köteten.

Teljes szöveges katalógus kiválasztása

Javasoljuk, hogy azokat a táblákat, amelyek hasonló frissítési jellemzőkkel rendelkeznek (mint például kis számú vagy nagy számú módosítás, illetve egy adott napszakban gyakori változás), egy teljes szöveges katalógusba társítsa. A teljes szöveges katalógus népesség-ütemezésének beállításával a teljes szöveges indexek szinkronban maradnak a táblákkal anélkül, hogy hátrányosan befolyásolnák az adatbázis-kiszolgáló erőforrás-használatát a magas adatbázis-tevékenység időszakában.

Vegye figyelembe a következő irányelveket:

  • Ha több millió sorból álló táblázatot indexel, rendelje hozzá a táblát a saját teljes szöveges katalógusához.

  • Vegye figyelembe a táblákban bekövetkező változások mértékét, valamint a sorok teljes számát. Ha a módosított sorok teljes száma és a táblázat utolsó teljes szöveges sokaságában található sorok száma több millió sort jelöl, rendelje hozzá a táblát a saját teljes szöveges katalógusához.

Egyedi index társítása

Mindig válassza ki a teljes szöveges egyedi kulcshoz elérhető legkisebb egyedi indexet. (A 4 bájtos, egész számon alapuló index optimális.) Ez jelentősen csökkenti a Microsoft Search szolgáltatás által a fájlrendszerben szükséges erőforrásokat. Ha az elsődleges kulcs nagy (több mint 100 bájt), fontolja meg egy másik egyedi index kiválasztását a táblában (vagy hozzon létre egy másik egyedi indexet) teljes szöveges egyedi kulcsként. Ellenkező esetben, ha a teljes szöveges egyedi kulcsméret meghaladja a megengedett maximális méretet (900 bájt), a teljes szöveges sokaság nem fog tudni továbblépni.

Stoplist társítása

A stoplist egy stopszavak listája, más néven ún. zajszavak. Minden teljes szöveges indexhez egy stoplista van társítva, és a stoplistában szereplő szavak az adott index teljes szöveges lekérdezéseire lesznek alkalmazva. Alapértelmezés szerint a rendszer stoplistája egy új teljes szöveges indexhez van társítva. Saját stoplistát is létrehozhat és használhat.

Például a következő CREATE FULLTEXT STOPLIST Transact-SQL utasítás egy új, myStoplist nevű teljes szöveges stoplistot hoz létre a rendszer leállítólistájából való másolással:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;  
GO  

Az alábbi ALTER FULLTEXT STOPLIST Transact-SQL utasítás módosítja a myStoplist nevű stoplistet, és hozzáadja az "en" szót, először spanyol, majd francia nyelven:

ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';  
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';  
GO  

További információért lásd: Leállószavak és leállólisták konfigurálása és kezelése a Full-Text kereséshez.

Teljes szöveges index frissítése

A hagyományos SQL Server-indexekhez hasonlóan a teljes szöveges indexek is automatikusan frissíthetők, amint az adatok módosulnak a társított táblákban. Ez az alapértelmezett viselkedés. Az alternatíva, hogy a teljes szöveges indexeket manuálisan, vagy a megadott ütemezett időközönként tartja up-to-date. A teljes szöveges index feltöltése időigényes és erőforrásigényes lehet. Ezért az indexfrissítés általában aszinkron folyamatként történik, amely a háttérben fut, és naprakészen tartja a teljes szöveges indexet az alaptáblában végzett módosítások után.

A teljes szöveges index azonnali frissítése az alaptábla minden módosítása után szintén erőforrásigényes. Ezért ha magas a frissítési/beszúrási/törlési arány, a lekérdezési teljesítmény némi romlását tapasztalhatja. Ha ez történik, fontolja meg a manuális változáskövetési frissítések ütemezését, hogy időről időre lépést tartson a számos változással, és ne versengjen az erőforrások lekérdezéseivel.

További információkért lásd: Full-Text Indexek feltöltése.

Következő lépések

Az SQL Server Full-Text Search beállítása után készen áll a teljes szöveges lekérdezések futtatására. További információért lásd: Lekérdezés Full-Text Keresés.