Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Returnerar det slutliga tokeniseringsresultatet efter att ha applicerat en given ordbrytare, synonymordbok och stopplistakombination på en frågesträngsinmatning. Tokeniseringsresultatet motsvarar utdata från Full-Text Engine för den angivna frågesträngen.
sys.dm_fts_parser är en dynamisk ledningsfunktion.
Syntax
sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )
Arguments
query_string
Frågan du vill tolka. query_string kan vara en strängkedja som INNEHÅLLER syntaxstöd. Till exempel kan du inkludera böjningsformer, en synonymordbok och logiska operatorer.
lcid
Lokalidentifierare (LCID) för ordbrytaren som ska användas för att tolka query_string.
stoplist_id
ID för stopplistan, om någon, ska användas av ordbrytaren som identifieras av lcid. stoplist_id är int. Om du anger 'NULL' används ingen stopplista. Om du anger 0 används systemets STOPLIST.
Ett stopplista-ID är unikt inom en databas. För att få stopplist-ID för ett fulltextindex i en given tabell, använd sys.fulltext_indexes katalogvy.
accent_sensitivity
Booleskt värde som styr om fulltextsökning är känslig eller okänslig för diakritiska medel. accent_sensitivity är bit, med ett av följande värden:
| Value | Accentkänslighet är... |
|---|---|
| 0 | Insensitive Ord som "café" och "café" behandlas likadant. |
| 1 | Känslig Ord som "café" och "café" behandlas olika. |
Note
För att se den aktuella inställningen för detta värde i en fulltextkatalog, kör följande Transact-SQL sats: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.
Tabellen returneras
| Kolumnnamn | Datatyp | Description |
|---|---|---|
| nyckelord | varbinary(128) | Den hexadecimala representationen av ett givet nyckelord returneras av en ordbrytare. Denna representation används för att lagra nyckelordet i fulltextindexet. Detta värde är inte läsbart för människor, men det är användbart för att relatera ett givet nyckelord till utdata som returneras av andra dynamiska hanteringsvyer som returnerar innehållet i ett fulltextindex, såsom sys.dm_fts_index_keywords och sys.dm_fts_index_keywords_by_document. Notera: 0xFF representerar det speciella tecknet som anger slutet på en fil eller dataset. |
| group_id | int | Innehålla ett heltalsvärde som är användbart för att derivera den logiska grupp från vilken en given term genererades. Till exempel ger 'Server AND DB OR FORMSOF(THESAURUS, DB)"' följande group_id värden på engelska:1: Server 2: DB 3: DB |
| phrase_id | int | Innehåller ett heltalsvärde som är användbart för att särskilja de fall där alternativa former av sammansatta ord, såsom fulltext, ges av ordbrytaren. Ibland, med förekomst av sammansatta ord ('multi-miljon'), ges alternativa former av ordbrytaren. Dessa alternativa former (fraser) behöver ibland differentieras. Till exempel ger ' multi-million' följande phrase_id värden på engelska:1 för multi1 för million2 för multimillion |
| occurrence | int | Anger ordningen för varje term i parsningsresultatet. Till exempel, för frasen "SQL Server query processor" skulle förekomst innehålla följande förekomstvärden för termerna i frasen, på engelska:1 för SQL2 för Server3 för query4 för processor |
| special_term | nvarchar(4000) | Innehåller information om egenskaperna hos termen som ges av ordbrytaren, en av: - Exakt matchning - Brusord - Slutet på meningen - Slut på stycket - Slut på kapitel |
| display_term | nvarchar(4000) | Innehåller den människoläsbara formen av nyckelordet. Precis som med funktionerna som är utformade för att komma åt innehållet i fulltextindexet kan denna visade term vara identisk med den ursprungliga termen på grund av denormaliseringsbegränsningen. Men den bör vara tillräckligt exakt för att hjälpa dig att identifiera den från den ursprungliga inmatningen. |
| expansion_type | int | Innehåller information om arten av expansionen av en given term, en av: 0 = Enkelordsfall 2 = Böjningsexpansion 4 = Tesaurusens expansion/ersättning Till exempel, betrakta ett fall där tesauren definierar run som en utveckling av jog:<expansion><sub>run</sub><sub>jog</sub></expansion>Termen FORMSOF (FREETEXT, run) genererar följande utdata:run med expansion_type = 0runs med expansion_type = 2running med expansion_type = 2ran med expansion_type = 2jog med expansion_type = 4 |
| source_term | nvarchar(4000) | Den term eller fras som en given term genererades eller tolkades från. Till exempel ger en fråga på följande '"word breakers" AND stemmers'source_term värden på engelska:word breakers för display_termwordword breakers för display_termbreakersstemmers för display_termstemmers |
Remarks
sys.dm_fts_parserstöder syntax och funktioner för fulltextpredikat, såsom CONTAINS och FREETEXT, samt funktioner, såsom CONTAINSTABLE och FREETEXTTABLE.
Använd Unicode för att tolka specialtecken
När du tolkar en frågesträng sys.dm_fts_parser använder du sorteringen av databasen du är ansluten till, om du inte anger frågesträngen som Unicode. Därför kan utdatan för en icke-Unicode-sträng som innehåller specialtecken, såsom ü eller ç, vara oväntad, beroende på sorteringen av databasen. För att bearbeta en frågesträng oberoende av databasens sammansättning, prefixa strängen med N, det vill säga N'query_string'.
För mer information, se C. Visa utdata från en sträng som innehåller specialtecken senare i denna artikel.
När ska man använda sys.dm_fts_parser
sys.dm_fts_parser kan vara kraftfullt för felsökning. Några större användningsområden inkluderar:
Att förstå hur en given ordbrytare behandlar en given input
När en fråga ger oväntade resultat är en sannolik orsak hur ordbrytaren tolkar och bryter datan. Genom att använda
sys.dm_fts_parser, upptäcker du resultatet att en ordbrytare skickas till fulltextindexet. Dessutom kan du se vilka termer som är stoppord, vilka som inte söks i fulltextindexet. Om en term är ett stoppord för ett givet språk beror på om den finns i stoplistan som specificeras av det stoplist_id värde som deklareras i funktionen.Accentkänslighetsflaggan låter dig se hur ordbrytaren tolkar inmatningen, med tanke på dess accentkänslighetsinformation.
För att förstå hur stemmern fungerar på en given indata
Du kan ta reda på hur ordbrytaren och stemmer tolkar en frågeterm och dess stemformer, genom att specificera en CONTAINS eller CONTAINSTABLE-fråga som innehåller följande FORMSOF-klausul:
FORMSOF( INFLECTIONAL, query_term )Resultaten visar vilka termer som skickas till fulltextindexet.
För att förstå hur tesauren expanderar eller ersätter hela eller delar av indatan
Du kan också specificera:
FORMSOF( THESAURUS, query_term )Resultaten av denna fråga visar hur ordbrytaren och synonymordboken interagerar för söktermen. Du kan se expansionen eller ersättningarna från synonymordboken och identifiera den resulterande förfrågan som faktiskt görs mot fulltextindexet.
Om användaren har problem med detta:
FORMSOF( FREETEXT, query_term )Böjnings- och synonymordboksfunktionerna sker automatiskt.
Utöver de tidigare användningsscenarierna kan det sys.dm_fts_parser hjälpa avsevärt att förstå och felsöka många andra problem med fulltextfrågor.
Permissions
Kräver CREATE FULLTEXT CATALOG tillstånd och åtkomsträttigheter till den angivna stopplistan.
Examples
A. Visa resultatet av en given ordbrytare för ett nyckelord eller en fras
Följande exempel returnerar utdata från att använda den engelska ordbrytaren, vars LCID är 1033, och ingen stopplista på följande frågesträng:
The Microsoft business analysis
Känsligheten för accent är inaktiverad.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);
B. Visa utdata från en given ordbrytare i samband med stopplistfiltrering
Följande exempel returnerar utdata från att använda den engelska ordbrytaren, vars LCID är 1033, och en engelsk stopplista, vars ID är 77, på följande frågesträng:
"The Microsoft business analysis" OR "MS revenue"
Känsligheten för accent är inaktiverad.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. Visa utdata från en sträng som innehåller specialtecken
Följande exempel använder Unicode för att tolka följande franska sträng:
français
Exemplet specificerar LCID för det franska språket, 1036, och ID:t för en användardefinierad stopplista, 5. Accentkänslighet är aktiverad.
SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);
Se även
- Full-Text Sök och semantisk sökning Dynamiska Hanteringsvyer och funktioner (Transact-SQL)
- Full-Text Sök
- Securables