sys.dm_fts_index_keywords_by_document (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w Microsoft Fabric

Zwraca informacje o treści na poziomie dokumentu w pełnym tekstie indeksu powiązanym z określoną tabelą.

sys.dm_fts_index_keywords_by_document jest dynamiczną funkcją zarządzania.

Składnia

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

Arguments

DB_ID('database_name')

Wezwanie do DB_ID funkcji. DB_ID to int. Funkcja ta akceptuje nazwę bazy danych i zwraca identyfikator bazy danych, który sys.dm_fts_index_keywords_by_document służy do znalezienia określonej bazy danych. Jeśli database_name zostanie pominięte, zwracany jest aktualny identyfikator bazy danych.

OBJECT_ID('table_name')

Wezwanie do funkcji OBJECT_ID . OBJECT_ID to int. Funkcja ta akceptuje nazwę tabeli i zwraca identyfikator tabeli zawierającej pełny indeks tekstowy do inspekcji.

Zwrócona tabela

Nazwa kolumny Typ danych Zanullowalny Opis
keyword 1 varbinary(128) No Szesnastkowa reprezentacja słowa kluczowego przechowywana w indeksie pełnym tekstem.
display_term 1 nvarchar(4000) No Format słowa kluczowego czytelnego dla człowieka. Format ten pochodzi z wewnętrznego formatu przechowywanego w indeksie pełnym tekstem.
column_id int No ID kolumny, z której dane słowo kluczowe zostało zindeksowane w pełnym tekście.
document_id bigint Yes Identyfikator dokumentu lub wiersza, z którego aktualny termin był indeksowany w pełnym tekście. Ten identyfikator odpowiada wartości klucza pełnego tekstu tego dokumentu lub wiersza.
occurrence_count int Yes Liczba wystąpień aktualnego słowa kluczowego w dokumencie lub wierszu oznaczana przez document_id. Gdy 'search_property_name' jest określone, occurrence_count wyświetla się tylko liczba wystąpień aktualnego słowa kluczowego w określonej właściwości wyszukiwania w dokumencie lub wierszu.

10xFF oznacza znak specjalny wskazujący koniec pliku lub zbioru danych.

Uwagi

Informacje zwrócone przez niego sys.dm_fts_index_keywords_by_document są przydatne do ustalenia między innymi:

  • Łączna liczba słów kluczowych zawartych w indeksie pełnym tekstem.
  • Niezależnie od tego, czy słowo kluczowe jest częścią danego dokumentu lub wiersza.
  • Ile razy słowo kluczowe pojawia się w całym indeksie pełnym tekstem. To znaczy, SUM(occurrence_count) WHERE keyword = <keyword_value>
  • Ile razy pojawia się słowo kluczowe w danym dokumencie lub wierszu.
  • Ile słów kluczowych zawiera dany dokument lub wiersz.

Możesz także wykorzystać informacje dostarczone przez do sys.dm_fts_index_keywords_by_document pobrania wszystkich słów kluczowych należących do danego dokumentu lub wiersza.

Gdy kolumna klucza pełnego tekstu jest całkowitoliczbowym typem danych, zgodnie z zaleceniami, mapuje się bezpośrednio document_id na pełnotekstową wartość klucza w tabeli bazowej.

Natomiast kolumna klucza pełnego tekstu używa niecałkowitego typu danych, document_id nie reprezentuje pełnego tekstu w tabeli bazowej. W tym przypadku, aby zidentyfikować wiersz w tabeli bazowej zwracany przez dm_fts_index_keywords_by_document, trzeba połączyć ten widok z wynikami zwróconymi przez sp_fulltext_keymappings.

Zanim będziesz mógł je dołączyć, musisz zapisać wyjście procedury przechowywanej w tabeli tymczasowej. Następnie możesz połączyć kolumnę document_id z dm_fts_index_keywords_by_document kolumną DocId zwracaną przez tę procedurę przechowywaną. Kolumna znacznika czasu nie może otrzymywać wartości w czasie wstawienia, ponieważ są one automatycznie generowane przez SQL Server. Dlatego kolumna znacznika czasu musi zostać przekształcona na kolumny varbinary(8). Poniższy przykład pokazuje te kroki. W tym przykładzie @table_id to ID Twojej tabeli, database_name to nazwa bazy danych, a table_name to nazwa Twojej tabeli.

USE database_name;
GO

CREATE TABLE #MyTempTable
(
    docid INT PRIMARY KEY,
    [key] INT NOT NULL
);

DECLARE @db_id AS INT = DB_ID(N'database_name');
DECLARE @table_id AS INT = OBJECT_ID(N'table_name');

INSERT INTO #MyTempTable
EXECUTE sp_fulltext_keymappings @table_id;

SELECT *
FROM sys.dm_fts_index_keywords_by_document(@db_id, @table_id) AS kbd
     INNER JOIN #MyTempTable AS tt
         ON tt.[docid] = kbd.document_id;
GO

Permissions

Wymaga SELECT zgody na kolumny objęte pełnym tekstem indeksu oraz CREATE FULLTEXT CATALOG uprawnień.

Examples

A. Wyświetlanie pełnych tekstów indeksu na poziomie dokumentu

Poniższy przykład pokazuje treść indeksu pełnego tekstu na poziomie dokumentu w tabeli HumanResources.JobCandidate przykładowej bazy AdventureWorks2025 danych.

Note

Możesz utworzyć ten indeks, wykonując przykład podany dla tabeli HumanResources.JobCandidate w .CREATE FULLTEXT INDEX

SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('AdventureWorks2025'), OBJECT_ID('HumanResources.JobCandidate'));
GO