Aracılığıyla paylaş


FREETEXT (Transact-SQL)

Bir WHERE yan tümce, anlamı ve tam ifade değil sözcüklerin eşleşen değerleri karakter tabanlı veri türleri içeren sütunlar için arama yapmak için kullanılan bir yüklemi iş arama koşulu.FREETEXT kullanıldığında, tam metin sorgusu alt yapısı dahili aşağıdaki eylemleri gerçekleştirir freetext_string, her terim ağırlığı bir atar ve sonra da eşleri bulur.

  • Dizeyi, tek tek sözcükleri, sözcük sınırlarının üzerinde (sözcük bölme) göre içine ayırır.

  • (Dallanma) sözcüklerin inflectional form oluşturur.

  • Eş anlamlılar sözlüğünü eşleşmeler temel terimler için uzantılarına veya değişiklik listesini tanımlar.

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • column_name
    Bir veya daha çok tam metin dizini oluşturulmuş sütun KIMDEN belirtilen tablo adı yan tümce.Sütun türü olabilir. char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, veya varbinary(max).

  • column_list
    Indicates that several columns, separated by a comma, can be specified.column_list must be enclosed in parentheses.Sürece language_term Belirtilen tüm sütunları dili column_list aynı olması gerekir.

  • *
    Tam metin arama için kayıtlı olan tüm sütunlar için arama yapmak için kullanılması gerektiğini belirtir verilen freetext_string. Birden çok tablo KIMDEN ise yan tümce, * tablo adıyla tam.Sürece language_term , tablonun tüm sütunlarını dilinin aynı olması gerekir belirtildi.

  • freetext_string
    Metin içinde arama yapmak mı column_name. Sözcükleri, tümcecikleri veya tümce, herhangi bir metni girilebilir.Eşleşmeler, herhangi bir terim veya herhangi bir terimdir, formları bulunursa tam metin dizini oluşturulur.

    Farklı olarak IÇERIR ve CONTAINSTABLE arama nerede koşul VE bir anahtar sözcüğü kullanıldığında olur. freetext_string sözcüğü 've', bir etkisiz sözcük kabul edilir veya stopword ve atılacak.

    Use of WEIGHT, FORMSOF, wildcards, NEAR and other syntax is not allowed.freetext_string is wordbroken, stemmed, and passed through the thesaurus.If freetext_string başvurudur çift tırnak imi içinde bir tümceciği eşleştirme yerine gerçekleştirilir; dallanma ve eş anlamlıları gerçekleştirilemiyor.

    freetext_string olan nvarchar. Giriş olarak başka bir karakter veri tipinin kullanıldığı bir örtülü dönüşüm oluşur.Aşağıdaki örnekte, @SearchWord olarak tanımlanmış değişken varchar(30), örtülü bir dönüştürme neden FREETEXT doğrulama.

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

    "Parametresi olarak algılaması" arasında dönüştürme çalışmadığından kullanın. nvarchar daha iyi başarım için. Bu örnekte, bildirin. @SearchWord olarak nvarchar(30).

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

    En iyi duruma GETIRMEK IÇIN sorgu ipucu nonoptimal bir plan oluşturulduğu durumlar için de kullanabilirsiniz.

  • language_term LANGUAGE
    Kaynakları sözcük bölme dallanma ve sorgunun parçası olarak eş anlamlılar ve stopword kaldırma için kullanılan dildir.Bu parametre seçime bağlıdır ve bir dize, tamsayı veya onaltılık düzendeki bir değerin bir dil yerel ayar tanıtıcısını (LCID) için ilgili belirtilebilir.If language_term , onu temsil edecek bir dil için arama koşulu tüm öğeleri uygulanacak belirtildi. Değer belirtilmezse, sütun tam metin dili kullanılır.

    Farklı dillerde belgeler ikili büyük nesne (BLOB'lar) tek bir sütunda birlikte depolanıyorsa, belirli bir belgenin yerel ayar tanıtıcısını (LCID) hangi dil içeriğini indekslemek belirler.When querying such a column, specifying LANGUAGElanguage_term can increase the probability of a good match.

    Bir dize olarak belirtildiğinde language_term karşılık gelen diğer ad dışladığını sütun değerisys.syslanguages (Transact-SQL) Uyumluluk görüntüleyin. Dize gibi tek tırnak işareti içine alınmalıdır 'language_term'. Bir tamsayı belirtildiğinde language_term dili tanımlayan gerçek LCıD'tir. Onaltılık değer olarak, belirtilen language_term 0 x onaltılık LCID değeriyle izler. Onaltılık değer sıfır satır aralığı da dahil olmak üzere, sekiz basamak aşmamalıdır.

    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.Nötr dil kaynakları kullanmak için , 0x0 olarak belirtin. language_term.

Remarks

Tam metin yüklemleri ve tek bir tablo KIMDEN yüklemi örtük çalışma çalışır.Birden çok tabloyu aramak için , bir sonuç aramak için FROM yan tümcesinde birleştirilen tablo kullanmak küme olan iki veya daha fazla tablonun çarpımı.

Tam metin sorguları FREETEXT kullanarak CONTAINS kullanarak bu tam metin sorguları daha az hassas ' dir.The SQL Server tam metin araması engine identifies important words and phrases. Özel bir anlamı için ayrılmış anahtar sözcükleri veya joker karakterler, genellikle içinde belirtilen anlam verilen <contains_search_condition> CONTAINS yüklem parametresi.

Uyumluluk düzey 70'den küçük ise, anahtar sözcük olarak FREETEXT tanınmıyor.Daha fazla bilgi için bkz:sp_dbcmptlevel (Transact-SQL).

Tam metin yüklemler izin verilmeyen OUTPUT yan tümce veritabanı uyumluluk düzey, 100'e ayarlandığında.

Örnekler

C.Belirtilen karakter değeri olarak içeren sözcükleri aramak için FREETEXT kullanma

Aşağıdaki örnek, sözcükleri ilgili, önemli güvenlik, bileşenleri içeren tüm belgeleri arar.

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

b.FREETEXT değişkenleri ile kullanma

Aşağıdaki örnek, bir değişken yerine belirli bir arama terimini kullanır.

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