FREETEXT (Transact-SQL)

Czy predykatu użyte w klauzula WHERE do przeszukiwania kolumny zawierające typy danych znakowych dla wartości, które odpowiadają znaczenie i nie tylko dokładna treść wyrazów w warunek wyszukiwania.Użyto FREETEXT aparat zapytanie pełnotekstowe wewnętrznie wykonuje następujące czynności na freetext_string, przypisuje każdy składnik a wagi i wyszukuje następnie dopasowania.

  • Oddziela ciąg na pojedyncze wyrazy oparte na granice wyrazu (dzielenia wyrazów).

  • Generuje inflectional formy wyrazów (mapowanie rdzeni).

  • Określa listę expansions lub zamiany dla warunków, oparte na dopasowania w tezaurusie.

Topic link iconKonwencje składni języka Transact-SQL

FREETEXT ( { column_name | (column_list) | * } 
          , 'freetext_string' [ , LANGUAGE language_term ] )

Argumenty

  • column_name
    Jest nazwą jednej lub kilku kolumn indeksowanych pełnego tekstu z tabela określone w klauzula FROM.Kolumny może być typu char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, lub varbinary(max).

  • column_list
    Indicates that several columns, separated by a comma, can be specified.column_list must be enclosed in parentheses.Chyba że language_term jest określony język wszystkie kolumny column_list musi być taka sama.

  • *
    Określa, że wszystkie kolumny, które zostały zarejestrowane przez funkcję wyszukiwania pełnotekstowego powinny być używane do wyszukiwania danej freetext_string. Jeśli jest więcej niż jedną tabela w klauzula FROM * musi być kwalifikowany za nazwą tabela.Chyba że language_term jest określony, język wszystkich kolumn w tabela muszą być takie same.

  • freetext_string
    Tekst do wyszukania w jest column_name. Można wprowadzić dowolny tekst, włączając w to słowa, frazy lub zdania.Dopasowuje są generowane, jeśli dowolnego terminu lub formularze każdy okres znajduje się w indeksie pełnego tekstu.

    W odróżnieniu od CONTAINS i CONTAINSTABLE wyszukiwania warunkiem gdzie i jest słowem kluczowym, kiedy jest używana w freetext_string wyraz "i" jest uważany za wyraz ignorowany lub stopword, a zostaną odrzucone.

    Use of WEIGHT, FORMSOF, wildcards, NEAR and other syntax is not allowed.freetext_string is wordbroken, stemmed, and passed through the thesaurus.Jeśli freetext_string jest ujęty w podwójny cudzysłów, zamiast tego jest wykonywane dopasowania frazę; Mapowanie rdzeni i tezaurusa nie są wykonywane.

    freetext_string jest nvarchar. Niejawna konwersja występuje wówczas, gdy inny typ danych znak jest używany jako dane wejściowe.W poniższym przykładzie @SearchWord Zmienna, która jest zdefiniowana jako varchar(30), powoduje, że niejawna konwersja w FREETEXT predykat.

    USE AdventureWorks;
    GO
    DECLARE @SearchWord varchar(30)
    SET @SearchWord ='performance'
    SELECT Description 
    FROM Production.ProductDescription 
    WHERE FREETEXT(Description, @SearchWord);
    

    Ponieważ "Wykrywanie parametrów" nie jest dostępna na konwersji, należy użyć nvarchar Aby zapewnić lepszą wydajność. W poniższym przykładzie zadeklarować @SearchWord jako nvarchar(30).

    USE AdventureWorks;
    GO
    DECLARE @SearchWord nvarchar(30)
    SET @SearchWord = N'performance'
    SELECT Description 
    FROM Production.ProductDescription 
    WHERE FREETEXT(Description, @SearchWord);
    

    W przypadkach, w którym jest generowany nonoptimal plan, można użyć do ZOPTYMALIZOWANIA do kwerendy wskazówkę dotyczącą kwerendy.

  • LANGUAGE language_term
    To język, w których zasobów będzie używany do dzielenia wyrazów, mapowanie rdzeni i usuwania tezaurusa i stopword jako część tej kwerendy.Ten parametr jest opcjonalny i może być określona jako ciąg znaków, liczba całkowita lub wartość szesnastkową odpowiadającą identyfikator regionalny (LCID) języka.Jeśli language_term jest określony, język reprezentuje zostaną zastosowane do wszystkich elementów tego warunek wyszukiwania. Jeśli nie określono wartości, używany jest język pełnego tekstu kolumna.

    Jeśli dokumenty w różnych językach są przechowywane razem jako binarne dużych obiektów (bloków BLOB) w jednej kolumnie, identyfikator regionalny (LCID) danego dokumentu określa, jaki język jest używany do indeksowania zawartości.When querying such a column, specifying LANGUAGElanguage_term can increase the probability of a good match.

    Jeśli określona jako ciąg znaków, language_term odpowiada alias wartość kolumna on sys.syslanguages (Transact-SQL) Widok zgodności. Ciąg musi być ujęty w pojedynczy cudzysłów, tak jak "language_term". Po określeniu jako liczbę całkowitą z zakresu language_term to rzeczywiste LCID identyfikujący języka. Gdy określany jako wartość szesnastkowa language_term 0 x następuje szesnastkowej wartości LCID. Wartość szesnastkowa nie może przekraczać ośmiu cyfr, łącznie z zerami na początku.

    If the value is in double-byte character set (DBCS) format, Microsoft SQL Server will convert it to Unicode.

    If the language specified is not valid or there are no resources installed that correspond to that language, Microsoft SQL Server returns an error.Aby można było korzystać z zasobów języków neutralnych, określić 0x0 jako language_term.

Remarks

Predykaty pełnego tekstu, a funkcje pracy na pojedynczej tabela, która jest podany w predykacie FROM.Aby wyszukać wielu tabel, należy użyć sprzężonej tabela w klauzula FROM do wyszukiwania zestaw wyników, który to iloczyn dwóch lub większej liczby tabel.

Kwerendy całego tekstu przy użyciu FREETEXT są mniej dokładne niż kwerendami całego tekstu przy użyciu CONTAINS.The SQL Server przeszukiwanie pełnego tekstu engine identifies important words and phrases. Nie specjalne znaczenie znajduje się do zastrzeżonych słów kluczowych lub znaków wieloznacznych, które zwykle mają znaczenie, gdy jest to określone w <contains_search_condition> Parametr predykat CONTAINS.

Jeśli poziom zgodności jest mniejsza niż 70 FREETEXT nie został rozpoznany jako słowo kluczowe.Aby uzyskać więcej informacji zobaczsp_dbcmptlevel (języka Transact-SQL).

Predykaty pełnego tekstu nie są dozwolone w Klauzula wyjście wówczas, gdy poziom zgodności bazy danych jest równa 100.

Przykłady

A.Wyszukiwanie słów zawierających określony znak wartości za pomocą FREETEXT

Następujący przykład wyszukuje wszystkie dokumenty zawierające wyrazy bezpieczeństwa związanych z istotne, składniki.

USE AdventureWorks;
GO
SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, 'vital safety components' );
GO

B.Za pomocą FREETEXT ze zmiennymi

W poniższym przykładzie użyto zmiennej zamiast określonego szukanego terminu.

USE AdventureWorks;
GO
DECLARE @SearchWord nvarchar(30);
SET @SearchWord = N'high-performance';
SELECT Description 
FROM Production.ProductDescription 
WHERE FREETEXT(Description, @SearchWord);
GO