Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
To funkcja używana w klauzuli FROM w instrukcji SELECT Transact-SQL do przeprowadzenia pełnotekstowego wyszukiwania SQL Server na kolumnach indeksowanych w pełnym tekstie zawierających typy danych opartych na znakach. Funkcja ta zwraca tabelę z zerem, jednym lub więcej wierszami dla tych kolumn zawierających wartości odpowiadające znaczeniu, a nie tylko dokładnemu sformułowaniu tekstu w podanym freetext_string. FREETEXTTABLE jest odwoływana tak, jakby była zwykłą nazwą tabeli.
FREETEXTTABLE jest przydatny do tych samych typów dopasowań co FREETEXT (Transact-SQL),
Zapytania z użyciem FREETEXTTABLE zwracają wartość rankingu trafności (RANK) oraz klucz pełnotekstowy (KEY) dla każdego wiersza.
Uwaga / Notatka
Aby uzyskać informacje na temat formularzy wyszukiwań pełnotekstowych obsługiwanych przez program SQL Server, zobacz Query with Full-Text Search.
Transact-SQL konwencje składni
Składnia
FREETEXTTABLE (table , { column_name | (column_list) | * }
, 'freetext_string'
[ , LANGUAGE language_term ]
[ , top_n_by_rank ] )
Arguments
table
To nazwa tabeli oznaczonej do zapytań pełnotekstowych.
Tabela lub widokmoże być jednoczęściową, dwu- lub trzyczęściową nazwą obiektu bazy danych. Podczas zapytania do widoku może być użyta tylko jedna pełna tekstowa tabela bazowa.
tabela nie może podać nazwy serwera i nie może być używana w zapytaniach przeciwko serwerom powiązanym.
column_name
Jest nazwą co najmniej jednej kolumny indeksowanej pełnotekstowo tabeli określonej w klauzuli FROM. Kolumny mogą być typu
column_list
Wskazuje, że można określić kilka kolumn rozdzielonych przecinkami.
column_list muszą być ujęte w nawiasy. Jeśli nie określono language_term, język wszystkich kolumn column_list musi być taki sam.
*
Określa, że wszystkie kolumny zarejestrowane do wyszukiwania pełnotekstowego powinny być używane do wyszukiwania dla danego freetext_string. Dopóki language_term nie jest określone, język wszystkich kolumn indeksowanych w pełnym tekstie w tabeli musi być taki sam.
freetext_string
To tekst do wyszukania w column_name. Można wprowadzić dowolny tekst, w tym wyrazy, frazy lub zdania. Dopasowania są generowane, jeśli dowolny termin lub formularze dowolnego terminu zostaną znalezione w indeksie pełnotekstowym.
W przeciwieństwie do warunku wyszukiwania ZAWIERA, gdzie AND jest słowem kluczowym, gdy używa się w freetext_string słowo 'and' jest traktowane jako słowo szumowe lub stopword i zostanie odrzucone.
Korzystanie z funkcji WEIGHT, FORMSOF, symboli wieloznacznych, FUNKCJI NEAR i innej składni nie jest dozwolone. freetext_string jest złamany wyrazem, stemmed i przekazywany przez tezaurusa.
LANGUAGE_TERM JĘZYKA
To język, którego zasoby będą używane na potrzeby przerywania wyrazów, ściągnięcia, a także usuwania tezaurusa i stopwordu w ramach zapytania. Ten parametr jest opcjonalny i może być określony jako ciąg, liczba całkowita lub wartość szesnastkowa odpowiadająca identyfikatorowi ustawień regionalnych (LCID) języka. Jeśli language_term zostanie określony, język, który reprezentuje, zostanie zastosowany do wszystkich elementów warunku wyszukiwania. Jeśli nie określono żadnej wartości, używany jest język pełnotekstowy kolumny.
Jeśli dokumenty różnych języków są przechowywane razem jako binarne duże obiekty (BLOB) w jednej kolumnie, identyfikator ustawień regionalnych (LCID) danego dokumentu określa język używany do indeksowania zawartości. Podczas zapytania do takiej kolumny określenie language_term JĘZYKA może zwiększyć prawdopodobieństwo dobrego dopasowania.
Gdy jest oznaczony jako ciąg znaków, language_term odpowiada wartości kolumny aliasu w widoku zgodności sys.syslanguages (Transact-SQL). Ciąg musi być ujęta w pojedynczy cudzysłów, tak jak w ciągu "language_term". Po określeniu jako liczba całkowita language_term jest rzeczywistym identyfikatorem LCID identyfikującym język. Po określeniu jako wartości szesnastkowej language_term jest 0x, a następnie wartość szesnastkowa LCID. Wartość szesnastkowa nie może przekraczać ośmiu cyfr, w tym zer wiodących.
Jeśli wartość jest w formacie zestawu znaków dwubajtowych (DBCS), program Microsoft SQL Server przekonwertuje ją na Unicode.
Jeśli podany język nie jest poprawny lub nie zainstalowano żadnych zasobów odpowiadających temu językowi, SQL Server zwraca błąd. Aby użyć zasobów języka neutralnego, określ 0x0 jako language_term.
top_n_by_rank
Określa, że zwracane są tylko nnajwyżej sklasyfikowanych pojedynków, w kolejności malejącej. Ma zastosowanie tylko wtedy, gdy określono wartość całkowitą n. Jeśli top_n_by_rank jest połączona z innymi parametrami, zapytanie może zwrócić mniej wierszy niż liczba wierszy, które faktycznie pasują do wszystkich predykatów.
top_n_by_rank pozwala zwiększyć wydajność zapytań, przypominając tylko najbardziej istotne trafienia.
Uwagi
Predykaty i funkcje pełnotekstowe działają na pojedynczej tabeli, co jest implikowane w predykacie FROM. Aby wyszukać wiele tabel, użyj tabeli sprzężonej w klauzuli FROM, aby wyszukać zestaw wyników, który jest produktem co najmniej dwóch tabel.
FREETEXTTABLE używa tych samych warunków wyszukiwania co predykat FREETEXT.
Podobnie jak CONTAINSTABLE, zwrócona tabela zawiera kolumny o nazwie KEY i RANK, do których odwołuje się w zapytaniu, aby uzyskać odpowiednie wiersze i użyć wartości rankingu wierszy.
Permissions
FREETEXTTABLE może być wywoływany tylko przez użytkowników posiadających odpowiednie uprawnienia SELECT dla określonej tabeli lub kolumn tabeli, do których się odwołuje.
Przykłady
A. Prosty przykład
Poniższy przykład tworzy i wypełnia prostą tabelę składającą się z dwóch kolumn, wymieniając 3 hrabstwa oraz kolory ich flag. Następnie tworzy i wypełnia pełny katalog tekstowy oraz indeks w tabeli. Następnie demonstrowana jest składnia FREETEXTTABLE .
CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);
INSERT Flags VALUES ('France', 'Blue and White and Red');
INSERT Flags VALUES ('Italy', 'Green and White and Red');
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');
SELECT * FROM Flags;
GO
CREATE FULLTEXT CATALOG TestFTCat;
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;
GO
SELECT * FROM Flags;
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Blue');
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Yellow');
B. Użycie FREETEXT w INNER JOIN
Poniższy przykład zwraca opis i rangę dowolnych iloczynów z opisem odpowiadającym znaczeniu .high level of performance
USE AdventureWorks2022;
GO
SELECT FT_TBL.Description
,KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL
INNER JOIN FREETEXTTABLE(Production.ProductDescription,
Description,
'high level of performance') AS KEY_TBL
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
ORDER BY RANK DESC;
GO
C. Określenie języka i najwyższych meczów
Poniższy przykład jest identyczny i pokazuje użycie LANGUAGE parametrów language_term i top_n_by_rank.
USE AdventureWorks2022;
GO
SELECT FT_TBL.Description
,KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL
INNER JOIN FREETEXTTABLE(Production.ProductDescription,
Description,
'high level of performance',
LANGUAGE N'English', 2) AS KEY_TBL
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
ORDER BY RANK DESC;
GO
Uwaga / Notatka
Parametr language_term LANGUAGE nie jest wymagany do użycia parametru top_n_by_rank .
Zobacz też
Rozpocznij pracę z usługą Full-Text Search
Create and Manage Full-Text Catalogs (Tworzenie katalogów pełnotekstowych i zarządzanie nimi)
UTWÓRZ KATALOG PEŁNOTEKSTOWY (Transact-SQL)
STWÓRZ PEŁNOTEKSTOWY INDEKS (Transact-SQL)
tworzenie indeksów Full-Text i zarządzanie nimi
Zapytanie z Full-Text Wyszukaj
Tworzenie Zapytania Wyszukiwania Full-Text (Visual Database Tools)
ZAWIERA (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
WOLNY TEKST (Transact-SQL)
Funkcje wiersza (Transact-SQL)
WYBIERZ (Transact-SQL)
GDZIE (Transact-SQL)
Opcja konfiguracji serwera precompute rank
Porównaj funkcje w Azure SQL Database i Azure SQL Managed Instance