CONTAINSTABLE (Transact-SQL)

Bir tablo sıfır, bir ya da daha fazla satır kesin veya bulanık (daha az kesin) eşleşmeleri tek sözcük ve tümcecikleri, belirli bir mesafe birbiri içinde sözcüklerin yakınlık veya ağırlıklı eşleşmeleri karakter tabanlı veri türleri içeren bu sütunlar için verir.Normal tablo adı üzerindeymiş CONTAINSTABLE yalnızca from yan tümce select deyim içinde başvurulabilir.

CONTAINSTABLE kullanarak sorguları döndüren bir ilgiye değer (rank) ve tam metin anahtar (key) her satır sıralaması içeren türü tam metin sorguları belirtin.CONTAINSTABLE işlev aynı arama koşulu CONTAINS kullanır.

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

Sözdizimi

CONTAINSTABLE ( table , { column_name | (column_list ) | * } , ' < contains_search_condition > ' 
     [ , LANGUAGE language_term] 
  [ , top_n_by_rank ] 
          ) 
< contains_search_condition > ::= 
    { < simple_term > 
    | < prefix_term > 
    | < generation_term > 
    | < proximity_term > 
    |  < weighted_term > 
    } 
    | { ( < contains_search_condition > ) 
    { { AND | & } | { AND NOT | &! } | { OR | | } } 
     < contains_search_condition > [ ...n ] 
    }
< simple_term > ::= 
     word | " phrase "
< prefix term > ::= 
     { "word * " | "phrase *" } 
< generation_term > ::= 
     FORMSOF ( { INFLECTIONAL | THESAURUS } , < simple_term > [ ,...n ] ) 
< proximity_term > ::= 
     { < simple_term > | < prefix_term > } 
     { { NEAR | ~ } { < simple_term > | < prefix_term > } } [ ...n ] 
< weighted_term > ::= 
     ISABOUT
    ( { { 
  < simple_term > 
  | < prefix_term > 
  | < generation_term > 
  | < proximity_term > 
  } 
   [ WEIGHT ( weight_value ) ] 
   } [ ,...n ] 
    )

Bağımsız değişkenler

  • table
    Tam metin bir tablo adı dizine alınır.tablebir bir, iki, üç veya dört veritabanı nesnesi adı olabilir.Yalnızca bir tam metin dizini oluşturulmuş temel tablo görünüm sorgularken dahil edilmelidir.

    tablesunucu adı belirtemezsiniz ve bağlantılı sunucuları sorgular kullanılamaz.

  • column_name
    Tam metin dizini bir veya daha fazla sütun adını arıyor.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.

  • *
    Tüm tam metin sütunları dizine belirtir table için verilen arama koşuluaranacak kullanılmalıdır.Sürece language_term belirtilmişse, tüm sütunlar tablo dilinin aynı olması gerekir.

  • DİLlanguage_term
    Kaynakları sözcük bölme, dallanma ve eş anlamlılar sözlüğü ve etkisiz sözcük için kullanılacak dil (veya stopword) kaldırma sorgu bir parçası olarak.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 sütun değeri sys.syslanguages 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 SQL Server işlevi bir hata.Nötr Dil kaynakları kullanmak için 0x0 olarak belirtmeniz language_term.

  • top_n_by_rank
    Yalnızca belirtir nazalan, en yüksek ranked eşleşmeler döndürülür.Yalnızca bir tamsayı değeri, geçerli n, belirtilir.top_n_by_rank Birleşiktir diğer parametreler ile sorgu aslında tüm yüklemleri. eşleşen satır sayısından daha az satır döndürmesine nedentop_n_by_rankyalnızca en uygun isabet geri çekmesini sorgu performansını artırmak sağlar.

  • <contains_search_condition>
    İçinde aranacak metni belirtir column_name ve koşullar için eşleşir.Arama koşulları hakkında daha fazla bilgi için bkz: CONTAINS (Transact-SQL).

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.

Döndürülen tablo adında bir sütun varsa anahtar , tam metin anahtar değerlerini içerir.Her tam metin dizini oluşturulmuş tablo sütun değerlerinin benzersiz olmasını garanti ve döndürülen değerler vardır anahtar sütun belirtilen seçim ölçütü ile eşleşen satır tam metin anahtar değerleri olan arama koşuluiçerir.TableFulltextKeyColumnobjectpropertyex işlev, elde edilenözellik, bu benzersiz anahtarsütunkimliğini sağlar. Tam metin anahtar tam metin dizini ile ilişkili sütun kimliği edinmek için sys.fulltext_indexes.Daha fazla bilgi için, bkz. sys.fulltext_indexes (Transact-SQL).

İstediğiniz satırları özgün tabloelde etmek için bir birleştirmek CONTAINSTABLE satırlarla belirtin.CONTAINSTABLE kullanarak bir select deyim from yan tümce tipik şekli şöyledir:

SELECT select_list
FROM table AS FT_TBL INNER JOIN
   CONTAINSTABLE(table, column, contains_search_condition) AS KEY_TBL
   ON FT_TBL.unique_key_column = KEY_TBL.[KEY]

CONTAINSTABLE tarafından üretilen tablo adlı bir sütun içeren derece.Derecene kadar iyi bir satır seçim ölçütleri karşılamadı gösteren her satır içinsütun olan bir değeri (0 ile 1000). Bu rütbe değeri genellikle select deyimiçinde bu şekilde kullanılır:

  • tabloilk satır olarak en yüksek sıralamaya sahip satırları döndürmek için order by yan tümce içinde.

  • Her satıra atanan rütbe değerini görmek için seçim listesinde.

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

İzinler

Yürütme izinleri, yalnızca tablo veya başvurulan tablosütunlarından uygun select ayrıcalıklarına sahip kullanıcılar tarafından kullanılabilir.

Örnekler

A.Rank değerleri CONTAINSTABLE kullanarak döndürme

Aşağıdaki örnek için tüm ürün adları içeren sözcükleri breads, balık ya da beers arar ve her sözcük için farklı weightings verilir.Bu arama ölçütüne uyan her döndürülen satır için (değer sıralaması) göreli eşleşme yakınlığına göre gösterilir.Buna ek olarak, en yüksek derecelendirme satırları ilk döndürülür.

USE Northwind;
GO
SELECT FT_TBL.CategoryName, FT_TBL.Description, KEY_TBL.RANK
    FROM Categories AS FT_TBL 
        INNER JOIN CONTAINSTABLE(Categories, Description, 
        'ISABOUT (breads weight (.8), 
        fish weight (.4), beers weight (.2) )' ) AS KEY_TBL
            ON FT_TBL.CategoryID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC;
GO

B.RANK değerleri CONTAINSTABLE kullanarak belirtilen değerden daha büyük döndürme

Aşağıdaki örnek, tüm Yiyecek kategorileri açıklamasını ve kategori adını döndürür Description sütun içeren sözcükleri "sweet and savory" ya da sözcük yakınında sauces veya word candies.Kategori adı tüm satırlar Seafood gözardı edilir.Yalnızca, bir rütbe değeri ile satırları 2 ya da daha yüksek döndü.

USE Northwind;
GO
SELECT FT_TBL.Description, FT_TBL.CategoryName, KEY_TBL.RANK
FROM Categories AS FT_TBL 
    INNER JOIN CONTAINSTABLE (Categories, Description, 
        '("sweet and savory" NEAR sauces) OR
        ("sweet and savory" NEAR candies)'
        ) AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 2
    AND FT_TBL.CategoryName <> 'Seafood'
ORDER BY KEY_TBL.RANK DESC;
GO

C.Gelen ilk 10 CONTAINSTABLE ve top_n_by_rank kullanarak sonuçlar temel alınarak derecelendirildi

Aşağıdaki örnek en iyi 10 Yiyecek kategorileri açıklamasını ve kategori adını verir burada Description sütun "Tatlı ve savory" sözcükleri içerir ya da word "sauces" ya da "candies" sözcüğü.

USE Northwind;
SELECT FT_TBL.Description, FT_TBL.CategoryName , KEY_TBL.RANK
FROM Categories AS FT_TBL 
    INNER JOIN CONTAINSTABLE (Categories, Description, 
        '("sweet and savory" NEAR sauces) OR
        ("sweet and savory" NEAR candies)', 10)
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY]

GO

D.Dil değişkenin belirtilmesi

Aşağıdaki örnekler kullanarak LANGUAGE bağımsız değişkeni.

USE Northwind;
SELECT FT_TBL.Description , FT_TBL.CategoryName , KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN CONTAINSTABLE (dbo.Categories, Description, 
        '("sweet and savory" NEAR sauces) OR
        ("sweet and savory" NEAR candies)',LANGUAGE N'English', 10) 
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];

Not

Dil language_term bağımsız değişkenikullanmak için gerekli top_n_by_rank.