sys.dm_fts_index_keywords_by_property (Transact-SQL)

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

Zwraca całą zawartość związaną z właściwościami w pełnym tekście indeksu danej tabeli. Obejmuje to wszystkie dane należące do dowolnej nieruchomości zarejestrowanej przez listę właściwości wyszukiwania powiązaną z tym pełnym tekstem indeksu.

sys.dm_fts_index_keywords_by_property to dynamiczna funkcja zarządzania, która pozwala zobaczyć, jakie zarejestrowane właściwości zostały wygenerowane przez IFilters w czasie indeksowania, a także dokładną zawartość każdej właściwości w każdym indeksowanym dokumencie.

Aby uzyskać informacje o listach nieruchomości do wyszukiwania, zobacz Wyszukaj dokumenty nieruchomości z listami Wyszukiwań nieruchomości.

Składnia

sys.dm_fts_index_keywords_by_property
(
    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_property 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.
property_id int Yes Wewnętrzny identyfikator właściwości wyszukiwania w pełnym tekście tabeli, którą określiłeś w parametrze OBJECT_ID .

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

Gdy dana własność zostanie dodana do listy właściwości wyszukiwania, Full-Text Engine rejestruje tę własność i przypisuje jej wewnętrzny identyfikator właściwości specyficzny dla tej listy. Wewnętrzny identyfikator właściwości, który jest liczbą całkowitą, jest unikalny dla danej listy właściwości wyszukiwania. Jeśli dana właściwość jest zarejestrowana dla wielu list właściwości wyszukiwania, dla każdej listy właściwości wyszukiwania może zostać przypisany inny identyfikator właściwości wewnętrznej.

Note

Wewnętrzny identyfikator właściwości różni się od identyfikatora całkowitego właściwości, który jest określany przy dodawaniu tej właściwości do listy właściwości wyszukiwania. Aby uzyskać więcej informacji, zobacz Wyszukaj właściwości dokumentu za pomocą list właściwości wyszukiwania.

Aby zobaczyć powiązanie między a property_id nazwą nieruchomości, zobacz sys.registered_search_properties.

Uwagi

To dynamiczne podejście do zarządzania może odpowiadać na takie pytania:

  • Jakie treści są przechowywane na danej właściwości dla danego DocID?

  • Jak powszechna jest dana właściwość wśród dokumentów indeksowanych?

  • Jakie dokumenty faktycznie zawierają daną własność? Jest to przydatne, jeśli zapytanie na daną właściwość wyszukiwania nie zwraca dokumentu, którego się spodziewałeś.

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_property, 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_property 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_property(@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

Poniższy przykład zwraca słowa kluczowe z Author właściwości w indeksie pełnym tekstu tabeli Production.Document przykładowej bazy AdventureWorks2025 danych. Przykład używa aliasu KWBPOP tabeli zwracanej przez sys.dm_fts_index_keywords_by_property . Przykład używa wewnętrznych połączeń do łączenia kolumn z sys.registered_search_properties i sys.fulltext_indexes.

-- Once the full-text index is configured to support property searching
-- on the Author property, return any keywords indexed for this property.
USE AdventureWorks2025;
GO

SELECT KWBPOP.*
FROM sys.dm_fts_index_keywords_by_property(DB_ID(), OBJECT_ID('Production.Document')) AS KWBPOP
     INNER JOIN sys.registered_search_properties AS RSP
         ON ((KWBPOP.property_id = RSP.property_id)
         AND (RSP.property_name = 'Author'))
     INNER JOIN sys.fulltext_indexes AS FTI
         ON ((FTI.[OBJECT_ID] = OBJECT_ID('Production.Document'))
         AND (RSP.property_list_id = FTI.property_list_id));
GO