Aracılığıyla paylaş


freetext (Transact-SQL)

Bir yüklemi, anlamı ve yalnızca tam sözcükleri arama koşuluifadesi eşleşen değerleri için karakter tabanlı veri türleri içeren sütunlar aramak için where yan tümce tümcesinde kullanılır.freetext kullanıldığında, tam metin sorgusu motoru dahili olarak aşağıdaki eylemleri gerçekleştirir freetext_string, her terim atar, Ağırlık ve sonra bulur eşleşir.

  • Tek tek sözcüklere sözcük sınırlarına (sözcük bölme) göre içine dize ayırır.

  • (Dallanma) sözcüklerin deyimlerin formları oluşturur.

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

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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

Bağımsız değişkenler

  • column_name
    from yan tümcetümcesinde belirtilen tablo , tam metin dizinlenmiş sütunların bir veya daha fazla adıdır.The columns can be of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, or varbinary(max).

  • column_list
    Virgül ile ayırarak, birden fazla sütun belirtilen gösterir.column_listayraç içine alınmalıdır.Sürece language_term belirtilirse, tüm sütunları dilinin column_list aynı olmalıdır.

  • *
    Tam metin arama için kayıtlı tüm sütunları aramak için kullanılacağını belirten verilen freetext_string.from yan tümcetümcesinde birden fazla tablo ise * tablo adı uygun olmalı.Sürece language_term belirtilmişse, tüm sütunlar tablo dilinin aynı olması gerekir.

  • freetext_string
    Metin içinde arama yapmak column_name.Sözcükleri, sözcük gruplarını veya cümleler, dahil olmak üzere herhangi bir metni girilebilir.Eşleşen herhangi bir terim ya da herhangi bir terim formları bulunursa tam metin dizini oluşturulur.

    Tersine CONTAINS ve CONTAINSTABLE arama koşulu nerede ve bir anahtar kullanıldığında freetext_string word 've' etkisiz sözcükkabul veya stopwordve atılır.

    Ağırlık, formsof, joker, near ve diğer sözdizimi kullanımını izin verilmez.freetext_stringstemmed ve eşanlamlılar geçirilen wordbroken olur.freetext_string İçine çift tırnak içine bir tümcecik eşleştirme yerine gerçekleştirilir; dallanma ve eş anlamlılar sözlüğü yapılmamaktadır.

    freetext_stringis nvarchar.Başka bir karakter veri türü girdi olarak kullanılan bir örtük dönüştürme gerçekleşir.Aşağıdaki örnekte, @SearchWord olarak tanımlanır, değişken varchar(30), neden bir örtük dönüştürme FREETEXT yüklemi.

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

    Çünkü "parametresi algılaması" dönüştürme kullan çalışmıyor nvarchar daha iyi performans.Örnekte, bildirmek @SearchWord olarak nvarchar(30).

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

    En iyi duruma GETİRMEK için sorgu ipucu Optimum olmayan bir plan oluşturulan durumlar için de kullanabilirsiniz.

  • DİLlanguage_term
    Kaynakları sözcük bölme, dallanma ve eş anlamlılar sözlüğü ve stopword kaldırma sorgunun parçası olarak kullanılan dildir.Bu parametre seçime bağlıdır ve bir dize, tamsayı veya yerel ayar tanıtıcısı bir dil için (LCID) karşılık gelen onaltılık değeri olarak belirtilebilir.language_term Belirtilmişse, temsil ettiği dil arama koşulutüm öğeler için uygulanır.Herhangi bir değer belirtilmezse, sütun tam metin dili kullanılır.

    Farklı dillerde belgeler birlikte ikili büyük nesneleri (BLOB) tek bir sütunolarak depolanır, hangi dil, içerik dizini oluşturmak için kullanılan belirli bir belgenin yerel ayar tanıtıcısını (LCID) belirler.Böyle bir sütunsorgularken belirtme LANGUAGElanguage_term olasılığını artırmakiyi bir eşleşme.

    Bir dizebelirtildiğinde language_term karşılık gelen diğer ad hesütun değeri sys.syslanguages (Transact-SQL) Uyumluluk Görünümü. dize gibi tek tırnak işareti içine alınmalıdır 'language_term'.Tamsayı belirtildiğinde language_term gerçek LCID tanıtan dili.Onaltılı değer olarak belirtildiğinde language_term 0 x onaltılık değerini ardında iseLCID.Onaltılık değeri, sekiz basamak, öndeki sıfırı dahil aşmamalıdır.

    Değer (DBCS) çift baytlık karakter kümesi biçiminde ise Microsoft SQL Server tarafından kendisine dönüştürülürUnicode.

    Belirtilen dil geçerli veya orada değilse, hiçbir kaynak bu dile karşılık gelen yüklü olan Microsoft SQL Server işlevi bir hata.Nötr Dil kaynakları kullanmak için 0x0 olarak belirtmeniz language_term.

Açıklamalar

Tam metin yüklemleri ve Kimden yüklemi örtülü bir tek tabloiş görür.Birden çok tabloyu aramak için birleştirilmiş bir tablo from yan tümce tümcesinde iki veya daha fazla tablo ürünü olan bir sonuç kümesi arama yapın.

freetext kullanan tam metin sorguları içerir kullanarak bu tam metin sorguları daha az kesin.SQL Servertam metin araması motoru önemli sözcük ve sözcük gruplarını tanımlar. Ayrılmış anahtar sözcükleri veya genellikle belirtilen zaman anlam joker karakterler herhangi birine verilen özel bir anlamı <contains_search_condition> CONTAINS parametresi.

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

Tam metin yüklemler içinde verilmez output yan tümce veritabanı Uyumluluk düzey olduğunda 100 küme .

Tam metin arama ile benzer karşılaştırması

tam metin araması, aksine için gibi Transact-SQL yüklemi çalışır yalnızca karakter kalıplarını. Ayrıca, LIKE biçimlendirilmiş ikili veri sorgulamak için kullanamazsınız.Ayrıca, yapılandırılmamış metin veri büyük miktarda karşı benzer bir sorgu aynı verileri bir eşdeğer tam metin sorgusu daha yavaştır.Metin veri satırları milyonlarca karşı benzer bir sorgu dönmek için dakika sürebilir; tam metin sorgusu yalnızca saniye sürebilir ama daha az karşı aynı veri türüne bağlı olarak döndürülen satır sayısı.

Örnekler

A.Belirtilen karakter değerleri içeren sözcükleri aramak için freetext kullanma

Aşağıdaki örnek, "hayati", "güvenlik" ve "Bileşenler" sözcüklerini içeren tüm belgeleri arar.

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

B.Serbest metin değişkenleri ile kullanma

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

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