Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Geeft het uiteindelijke tokenisatieresultaat terug na het toepassen van een gegeven woordbreeker, thesaurus en stoplistcombinatie op een querystring-invoer. Het tokenisatieresultaat is gelijkwaardig aan de output van de Full-Text Engine voor de gespecificeerde querystring.
sys.dm_fts_parser is een dynamische managementfunctie.
Syntax
sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )
Arguments
query_string
De zoekopdracht die je wilt parsen. query_string kan een stringketen zijn die syntaxisondersteuning BEVAT . Je kunt bijvoorbeeld verbuigingsvormen, een thesaurus en logische operatoren toevoegen.
lcid-
Locale identifier (LCID) van de woordbreker die gebruikt moet worden voor het parsen van query_string.
stoplist_id
ID van de stoplijst, indien aanwezig, die gebruikt moet worden door de woordbreker die door lcid wordt geïdentificeerd. stoplist_id is int. Als je 'NULL' specificeert, wordt er geen stoplijst gebruikt. Als je 0 specificeert, wordt de systeem-STOPLIST gebruikt.
Een stoplist-ID is uniek binnen een database. Om de stoplist-ID voor een full-text index op een gegeven tabel te verkrijgen, gebruikt u de catalogusweergave sys.fulltext_indexes .
accent_sensitivity
Booleaanse waarde die bepaalt of full-text search gevoelig of ongevoelig is voor diakritische tekens. accent_sensitivity is bit, met een van de volgende waarden:
| Value | Gevoeligheid voor accenten is... |
|---|---|
| 0 | Ongevoelig Woorden zoals "café" en "café" worden identiek behandeld. |
| 1 | Gevoelig Woorden zoals "café" en "café" worden verschillend behandeld. |
Note
Om de huidige instelling van deze waarde voor een full-text catalogus te bekijken, voer je de volgende Transact-SQL instructie uit: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| trefwoord | varbinary(128) | De hexadecimale representatie van een gegeven trefwoord wordt teruggegeven door een woordbreker. Deze representatie wordt gebruikt om het trefwoord op te slaan in de full-text index. Deze waarde is niet door mensen leesbaar, maar is nuttig om een bepaald trefwoord te relateren aan output die wordt teruggegeven door andere dynamische beheerweergaven die de inhoud van een full-text index teruggeven, zoals sys.dm_fts_index_keywords en sys.dm_fts_index_keywords_by_document. Opmerking: 0xFF vertegenwoordigt het speciale teken dat het einde van een bestand of dataset aangeeft. |
| group_id | int | Bevat een geheel getal dat nuttig is voor het differentiëren van de logische groep waaruit een gegeven term is gegenereerd. Bijvoorbeeld, 'Server AND DB OR FORMSOF(THESAURUS, DB)"' levert de volgende group_id waarden in het Engels op:1: Server 2: DB 3: DB |
| phrase_id | int | Bevat een geheel getal dat nuttig is om de gevallen te onderscheiden waarin alternatieve vormen van samengestelde woorden, zoals volledige tekst, door de woordbreker worden uitgegeven. Soms worden, bij aanwezigheid van samengestelde woorden ('multi-miljoen'), alternatieve vormen uitgegeven door de woordbreker. Deze alternatieve vormen (zinnen) moeten soms worden onderscheiden. Bijvoorbeeld, ' multi-million' levert de volgende phrase_id waarden in het Engels op:1 voor multi1 voor million2 voor multimillion |
| occurrence | int | Geeft de volgorde van elke term in het parsingsresultaat aan. Bijvoorbeeld, voor de uitdrukking "SQL Server query processor" zou voorkomen de volgende voorkomswaarden bevatten voor de termen in de frase, in het Engels:1 voor SQL2 voor Server3 voor query4 voor processor |
| special_term | nvarchar(4000) | Bevat informatie over de kenmerken van de term die door de woordbreker wordt uitgegeven, een van: - Exacte overeenkomst - Ruiswoord - Einde van de zin - Einde van de alinea - Einde van het hoofdstuk |
| display_term | nvarchar(4000) | Bevat de door mensen leesbare vorm van het trefwoord. Net als bij de functies die ontworpen zijn om toegang te krijgen tot de inhoud van de volledige tekstindex, kan deze weergegeven term niet identiek zijn aan de oorspronkelijke term vanwege de denormalisatiebeperking. Het zou echter nauwkeurig genoeg moeten zijn om je te helpen het te identificeren aan de hand van de oorspronkelijke invoer. |
| expansion_type | int | Bevat informatie over de aard van de expansie van een gegeven term, een van: 0 = Enkelvoudige naamval 2 = Inflectieexpansie 4 = Thesaurusuitbreiding/vervanging Neem bijvoorbeeld een geval waarin de thesaurus run definieert als een expansie van jog:<expansion><sub>run</sub><sub>jog</sub></expansion>De term FORMSOF (FREETEXT, run) genereert de volgende output:run met expansion_type = 0runs met expansion_type = 2running met expansion_type = 2ran met expansion_type = 2jog met expansion_type = 4 |
| source_term | nvarchar(4000) | De term of frase waaruit een bepaalde term is gegenereerd of geparseerd. Bijvoorbeeld, een query op de '"word breakers" AND stemmers' levert de volgende source_term waarden in het Engels op:word breakers Voor de display_termwordword breakers Voor de display_termbreakersstemmers Voor de display_termstemmers |
Remarks
sys.dm_fts_parserondersteunt de syntaxis en functies van full-text predicaten, zoals CONTAINS en FREETEXT, en functies, zoals CONTAINSTABLE en FREETEXTTABLE.
Gebruik Unicode voor het parsen van speciale tekens
Wanneer je een querystring sys.dm_fts_parser pars, gebruikt je de collatie van de database waarmee je verbonden bent, tenzij je de querystring als Unicode specificeert. Daarom kan voor een niet-Unicode-string die speciale tekens bevat, zoals ü of ç, de output onverwacht zijn, afhankelijk van de sortering van de database. Om een querystring onafhankelijk van de database-collatie te verwerken, wordt de string voorafgegaan met N, dat wil zeggen, N'query_string'.
Voor meer informatie, zie C. Toon later in dit artikel de uitvoer van een string met speciale tekens .
Wanneer te gebruiken sys.dm_fts_parser
sys.dm_fts_parser Kan krachtig zijn voor debuggingdoeleinden. Enkele belangrijke gebruiksscenario's zijn:
Om te begrijpen hoe een bepaalde woordbreker een bepaalde invoer behandelt
Wanneer een query onverwachte resultaten oplevert, is een waarschijnlijke oorzaak de manier waarop de woordbreker de data ontleedt en breekt. Door te gebruiken
sys.dm_fts_parserontdek je het resultaat dat een woordbreker doorgeeft aan de full-text index. Daarnaast kun je zien welke termen stopwoorden zijn, welke niet worden gezocht in de volledige tekstindex. Of een term een stopwoord is voor een bepaalde taal hangt af van of het in de stoplijst staat die wordt gespecificeerd door de stoplist_id waarde die in de functie wordt gedeclareerd.De accentgevoeligheidsvlag laat je zien hoe de woordbreker de invoer ontleedt, met het oog op de accentgevoeligheidsinformatie.
Om te begrijpen hoe de stemmer werkt op een bepaalde invoer
Je kunt achterhalen hoe de woordbreker en de stemmer een queryterm en de stemvorms ervan parsen, door een CONTAINS of CONTAINSTABLE query te specificeren die de volgende FORMSOF-clausule bevat:
FORMSOF( INFLECTIONAL, query_term )De resultaten geven aan welke termen aan de volledige tekstindex worden doorgegeven.
Om te begrijpen hoe het thesaurus de invoer uitbreidt of vervangt of geheel of een deel ervan vervangt
Je kunt ook specificeren:
FORMSOF( THESAURUS, query_term )De resultaten van deze zoekopdracht laten zien hoe de woordbreker en het synonyme woordenboek voor de zoekterm interageren. Je kunt de uitbreidingen of vervangingen uit de thesaurus zien en de resulterende query identificeren die daadwerkelijk wordt uitgegeven op basis van de full-text index.
Als de gebruiker problemen geeft:
FORMSOF( FREETEXT, query_term )De verbuigings- en Thesaurus-mogelijkheden vinden automatisch plaats.
Naast de voorgaande gebruiksscenario's kan het sys.dm_fts_parser aanzienlijk helpen om veel andere problemen met full-text query te begrijpen en op te lossen.
Permissions
Vereist CREATE FULLTEXT CATALOG toestemming en toegangsrechten tot de opgegeven stoplijst.
Examples
A. Toon de output van een gegeven woordbreker voor een trefwoord of uitdrukking
Het volgende voorbeeld geeft de output terug van het gebruik van de Engelse woordbreker, waarvan de LCID 1033 is, en geen stoplijst op de volgende queryreeks:
The Microsoft business analysis
Accentgevoeligheid is uitgeschakeld.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);
B. De output van een gegeven woordbreker weergeven in de context van stoplistfiltering
Het volgende voorbeeld geeft de output terug van het gebruik van de Engelse woordbreker, waarvan de LCID 1033 is, en een Engelse stoplijst, waarvan het ID 77 is, op de volgende querystring:
"The Microsoft business analysis" OR "MS revenue"
Accentgevoeligheid is uitgeschakeld.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. De uitvoer weergeven van een string die speciale tekens bevat
Het volgende voorbeeld gebruikt Unicode om de volgende Franse string te parsen:
français
Het voorbeeld specificeert de LCID voor de Franse taal, 1036, en de ID van een door de gebruiker gedefinieerde stoplijst, 5. Accentgevoeligheid is ingeschakeld.
SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);
Zie ook
- Full-Text Zoeken en Semantisch Zoeken Dynamische Beheerweergaven en -functies (Transact-SQL)
- Full-Text Zoek
- Securables