Sdílet prostřednictvím


sys.dm_fts_index_keywords_by_document (Transact-SQL)

Platí na:SQL ServerAzure SQL Managed InstanceAnalytický platformový systém (PDW)

Vrací informace o obsahu indexu na úrovni dokumentu spojeného s danou tabulkou.

sys.dm_fts_index_keywords_by_document je dynamická manažerská funkce.

Pro zobrazení informací indexu plných textů na vyšší úrovni

Pro zobrazení informací o obsahu na úrovni nemovitosti souvisejícím s dokumentem

Syntaxe

  
sys.dm_fts_index_keywords_by_document  
(   
    DB_ID('database_name'),     OBJECT_ID('table_name')   
)  

Arguments

db_id('database_name')
Volání funkce DB_ID(). Tato funkce přijímá název databáze a vrací ID databáze, které sys.dm_fts_index_keywords_by_document použije k nalezení určené databáze. Pokud je database_name vynecháno, vrátí se aktuální ID databáze.

object_id('table_name')
Volání funkce OBJECT_ID(). Tato funkce přijímá název tabulky a vrací ID tabulky obsahující celý textový index pro kontrolu.

Vrácená tabulka

Sloupec Datový typ Description
klíčové slovo nvarchar(4000) Hexadecimální reprezentace klíčového slova uložená v indexu plného textu.

Poznámka: OxFF představuje speciální znak, který označuje konec souboru nebo datové sady.
display_term nvarchar(4000) Lidsky čitelný formát klíčového slova. Tento formát je odvozen z interního formátu, který je uložen v indexu plného textu.

Poznámka: OxFF představuje speciální znak, který označuje konec souboru nebo datové sady.
column_id int ID sloupce, ze kterého bylo aktuální klíčové slovo indexováno v plném textu.
document_id int ID dokumentu nebo řádku, ze kterého byl aktuální termín indexován v plném textu. Toto ID odpovídá plnotextové hodnotě klíče daného dokumentu nebo řádku.
occurrence_count int Počet výskytů aktuálního klíčového slova v dokumentu nebo řádku, který je označen document_id. Když je zadán 'search_property_name', zobrazí occurrence_count pouze počet výskytů aktuálního klíčového slova ve specifikované vlastnosti vyhledávání v dokumentu nebo řádku.

Poznámky

Informace vrácené sys.dm_fts_index_keywords_by_document jsou užitečné pro zjištění mimo jiné následujícího:

  • Celkový počet klíčových slov, která obsahuje index plného textu.

  • Zda je klíčové slovo součástí daného dokumentu nebo řádku.

  • Kolikrát se klíčové slovo objeví v celém indexu plného textu; To je:

    (SUM(occurrence_count) KDE klíčové slovo=keyword_value )

  • Kolikrát se klíčové slovo objeví v daném dokumentu nebo řádku.

  • Kolik klíčových slov obsahuje daný dokument nebo řádek.

Také můžete využít informace poskytnuté sys.dm_fts_index_keywords_by_document k získání všech klíčových slov patřících k danému dokumentu nebo řádku.

Pokud je sloupec plného textu klíče celočíselným datovým typem, jak je doporučeno, document_id se přímo přemapuje na plnotextovou hodnotu klíče v základní tabulce.

Naopak, když sloupec s plným textem klíče používá neceločíselný datový typ, document_id nereprezentuje celý text klíče v základní tabulce. V tomto případě, abyste identifikovali řádek v základní tabulce, který dm_fts_index_keywords_by_document vrátí, musíte tento pohled spojit s výsledky vrácenými sp_fulltext_keymappings. Než je můžete připojit, musíte uložit výstup uložené procedury do tabulky temp. Pak můžete spojit document_id sloupec dm_fts_index_keywords_by_document s sloupcem DocId, který je vrácen touto uloženou procedurou. Všimněte si, že sloupec časového razítka nemůže přijímat hodnoty při vložení, protože jsou automaticky generovány SQL Serverem. Proto musí být sloupec časového razítka převeden na varbinární(8) sloupce. Následující příklad ukazuje tyto kroky. V tomto příkladu je table_id ID vaší tabulky, database_name je název vaší databáze a table_name je název vaší tabulky.

USE database_name;  
GO  
CREATE TABLE #MyTempTable   
   (  
      docid INT PRIMARY KEY ,  
      [key] INT NOT NULL  
   );  
DECLARE @db_id int = db_id(N'database_name');  
DECLARE @table_id int = OBJECT_ID(N'table_name');  
INSERT INTO #MyTempTable EXEC sp_fulltext_keymappings @table_id;  
SELECT * FROM sys.dm_fts_index_keywords_by_document   
   ( @db_id, @table_id ) kbd  
   INNER JOIN #MyTempTable tt ON tt.[docid]=kbd.document_id;  
GO  
  

Povolení

Vyžaduje oprávnění SELECT na sloupcích pokrytých indexem plného textu a oprávnění CREATE FULLTEXT CATALOG.

Examples

A. Zobrazení obsahu indexu v plném textu na úrovni dokumentu

Následující příklad zobrazuje obsah plnotextového indexu na úrovni dokumentu v tabulce HumanResources.JobCandidate ukázkové databáze AdventureWorks2025 .

Poznámka:

Tento index můžete vytvořit tak, že provedete příklad uvedený pro tabulku HumanResources.JobCandidate v CREATE FULLTEXT INDEX (Transact-SQL).

SELECT * FROM sys.dm_fts_index_keywords_by_document(db_id('AdventureWorks2022'),   
object_id('HumanResources.JobCandidate'));  
GO  

Viz také

Full-Text Dynamické pohledy a funkce správy vyhledávání a sémantického vyhledávání (Transact-SQL)
hledáníFull-Text
sys.dm_fts_index_keywords (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
sp_fulltext_keymappings (Transact-SQL)
Zlepšení výkonu Full-Text indexů