CONTAINSTABLE (Transact-sql)

Sıfır, bir ya da daha fazla satır kesin ya da bulanık (daha az hassas) maçları tek kelime ve deyimleri, kelimeleri belirli bir mesafede birbirlerine yakınlığı ya da ağırlıklı eşleşmeleri içeren bu sütunlar için bir tablo döndürür. CONTAINSTABLE içinde kullanılan from yan , a Transact-SQLseçme deyimi ve düzenli tablo adı sanki başvurulmaktadır. .Bu bir SQL Servertam metin üzerinde tam metin arama dizin karakter tabanlı veri türleri içeren sütunlar.

CONTAINSTABLE eşleşme olarak aynı tür yararlı CONTAINS ve aynı arama koşullarını içerir kullanır.

İÇERİR, ancak değeri (rank) ve her satır için tam metin anahtarını (key) derecelendirme uygunluğu CONTAINSTABLE kullanarak sorguları döndürür.

[!NOT]

Tam metin arama tarafından desteklenen biçimleri hakkında bilgi için SQL Serverbakın Tam metin arama sorgusuyla.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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> 
    | <generic_proximity_term> 
    | <custom_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 ] ) 

<generic_proximity_term> ::= 
     { <simple_term> | <prefix_term> } { { { NEAR | ~ } 
     { <simple_term> | <prefix_term> } } [ ...n ] }

<custom_proximity_term> ::= 
  NEAR ( 
     {
        { <simple_term> | <prefix_term> } [ ,…n ]
     |
        ( { <simple_term> | <prefix_term> } [ ,…n ] ) 
      [, <maximum_distance> [, <match_order> ] ]
     }
       ) 

      <maximum_distance> ::= { integer | MAX }
      <match_order> ::= { TRUE | FALSE } 

<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ı dizin oluşturulur. tablebir bir, iki, üç veya dört veritabanı nesnesi adı olabilir. Görünüm sorgularken, tek bir tam metin dizinlenmiş temel tablo dahil.

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

  • column_name
    Tam metin dizini bir veya daha fazla sütun adı arıyor. The columns can be of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, or varbinary(max).

  • column_list
    Bir virgülle ayrılmış birden fazla sütun belirtilen gösterir. column_listayraç içine alınmalıdır. Sürece language_termbelirtilen tüm sütunları dili column_listaynı olmalıdır.

  • *
    Tüm tam metin sütunları dizine belirtir table için arama koşulu Aranacak kullanılmalıdır. Sürece language_termbelirtilirse, tüm sütunlar tablonun dili aynı olması gerekir.

  • DİLlanguage_term
    Olan kaynakları sözcük bölme, Doğan, eş anlamlılar ve etkisiz sözcük için kullanılacak dil (ya da stopword) kaldırma sorgu bir parçası olarak. Bu parametre isteğe bağlıdır ve bir dize, tamsayı veya onaltılık değeri, bir dil yerel ayar tanıtıcısını (LCID) karşılık belirtilebilir. Eğer language_termbelirtilirse, temsil ettiği dil arama koşulu öğelerin tümüne uygulanır. Herhangi bir değer belirtilirse, sütun tam metin dili kullanılır.

    Farklı dillerde belgeler olarak büyük ikili nesneler (BLOB'lar) tek bir sütunda birlikte depolanıyorsa, verilen belgenin yerel ayar tanıtıcısını (LCID) içeriği dizine eklemek hangi dilde kullanılacağını belirler. Böyle bir sütun sorgularken belirterek LANGUAGE language_termiyi bir eşleşme olasılığını artırabilir.

    Bir dizge olarak belirtilen language_termkarşılık 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'. Bir tamsayı olarak belirtildiğinde language_termdilini tanımlayan gerçek LCID '. Onaltılı değer olarak belirtildiğinde language_term0 x LCID onaltılık değerini izliyor. Onaltılık değeri, sekiz basamak, öndeki dahil aşmamalıdır.

    Değer ise çift baytlı karakter kümesi (dbcs) biçimi, Microsoft  SQL ServerUnicode'a dönüştürür.

    Belirtilen dil veya orada geçerli değilse kaynak yok bu dile karşılık gelen yüklü SQL Serverhata veriyor. Nötr dil kaynakları kullanmak için 0x0 olarak belirtmeniz language_term.

  • top_n_by_rank
    Sadece belirtir nAzalan, en yüksek sırada eşleşmeler döndürülür. Yalnızca bir tamsayı değeri, geçerli n, belirtilen. Eğer top_n_by_rankbirleştirilir diğer parametrelerle sorgu, aslında tüm yüklemler eşleşen satır sayısından daha az satır geri dönebilirler. top_n_by_rankyalnızca en alakalı hits hatırlatarak tarafından sorgu performansını artırmak sağlar.

  • <contains_search_condition>
    İçinde aranacak metni belirtir column_nameve bir eşleşme koşulları. Arama koşulları hakkında daha fazla bilgi için bkz: (Transact-sql) içerir.

Açıklamalar

Tam metin doğrulamaları ve çalışma from yüklemi örtülü tek bir tabloda fonksiyonları. Birden fazla tabloyu temel arama yapmak için iki veya daha fazla tablodan bir ürün bir sonuç kümesi üzerinde aramak için from yan tümcesinde birleştirilen tablo kullanın.

Döndürülen tablo adında bir sütunu olan key tam metin anahtar değerleri içerir. Her tam metin dizini oluşturulmuş tablo değerleri garantili benzersiz olması için bir sütun ve döndürülen değerler olan key sütun belirtilen seçim ölçütü ile eşleşen bir satır tam metin anahtar değerleri olan arama koşulu içeren. TableFulltextKeyColumn özelliği, objectpropertyex işlevinden elde edilen bu benzersiz anahtar sütunu kimliğini sağlar. Tam metin dizini tam metin anahtar ile ilişkili sütun Kımlığı edinmek için içinsys.fulltext_indexesKatalog. Daha fazla bilgi için, bkz. içinsys.fulltext_indexesKatalog (Transact-sql).

İstediğiniz satırları özgün tablodan elde etmek için birleşim CONTAINSTABLE satırlarla belirtin. CONTAINSTABLE kullanarak bir select deyiminin from yan 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]

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 SIRASI. SIRASI sütun her satır için bir satır seçim kriterleri ne kadar iyi eşleşti gösteren bir değeri (0-1000) olduğunu. Bu rütbe değeri genellikle bir select deyimi aşağıdaki şekillerde kullanılır:

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

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

İzinler

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

Örnekler

A.Rank değerleri döndürme

Aşağıdaki örnek "çerçeve" sözcüklerini içeren tüm ürün adları için arama yapar. "tekerlek" ya da "lastiği" ve her sözcük için farklı ağırlık verilir. Bu arama ölçütüne uyan her döndürülen satır için (değer sıralamasında) göreli yakınlığı maçın gösterilir. Ayrıca, en yüksek sıralama satır ilk döndürülür.

USE AdventureWorks2012
GO

SELECT FT_TBL.Name, KEY_TBL.RANK
    FROM Production.Product AS FT_TBL 
        INNER JOIN CONTAINSTABLE(Production.Product, Name, 
        'ISABOUT (frame WEIGHT (.8), 
        wheel WEIGHT (.4), tire WEIGHT (.2) )' ) AS KEY_TBL
            ON FT_TBL.ProductID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC
GO

USE AdventureWorks2012
GO

SELECT FT_TBL.Name, KEY_TBL.RANK
    FROM Production.Product AS FT_TBL 
        INNER JOIN CONTAINSTABLE(Production.Product, Name, 
        'ISABOUT (frame WEIGHT (.8), 
        wheel WEIGHT (.4), tire WEIGHT (.2) )' ) AS KEY_TBL
            ON FT_TBL.ProductID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC
GO

B.Rank değerleri belirtilen bir değerden daha büyük döndürme

Aşağıdaki örnek yakın aramak için kullandığı "bracket'' ve "reflector'' birbirlerine yakın konumlara Production.Documentsütununda AdventureWorks2008veritabanı. Yalnızca satırları sıralama değeri 50 veya daha yüksek döndürülür.

USE AdventureWorks2012
GO

SELECT DocumentNode, Title, DocumentSummary
FROM Production.Document AS DocTable 
INNER JOIN CONTAINSTABLE(Production.Document, Document,
  'NEAR(bracket, reflector)' ) AS KEY_TBL
  ON DocTable.DocumentNode = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 50
ORDER BY KEY_TBL.RANK DESC
GO

USE AdventureWorks2012
GO

SELECT DocumentNode, Title, DocumentSummary
FROM Production.Document AS DocTable 
INNER JOIN CONTAINSTABLE(Production.Document, Document,
  'NEAR(bracket, reflector)' ) AS KEY_TBL
  ON DocTable.DocumentNode = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 50
ORDER BY KEY_TBL.RANK DESC
GO

[!NOT]

Tam metin sorgu olarak maksimum mesafe tamsayı atamazsa, yalnızca bulunmuş olan gap 100 mantıksal koşullarını büyük içeren bir belge çevre gereksinimlerini karşılamıyor ve sıralamasını 0 olacaktır.

C.Top_n_by_rank kullanarak en iyi 5 ranked sonuçları döndürülüyor

Aşağıdaki örnek en iyi 5 ürün açıklaması döndürür nerede Descriptionsütun "alüminyum" sözcüğünü içerir ya da kelime "ışık" ya da "basit" sözcüğü.

USE AdventureWorks2012
GO

SELECT FT_TBL.ProductDescriptionID,
   FT_TBL.Description, 
   KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL INNER JOIN
   CONTAINSTABLE (Production.ProductDescription,
      Description, 
      '(light NEAR aluminum) OR
      (lightweight NEAR aluminum)',
      5
   ) AS KEY_TBL
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
GO

USE AdventureWorks2012
GO

SELECT FT_TBL.ProductDescriptionID,
   FT_TBL.Description, 
   KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL INNER JOIN
   CONTAINSTABLE (Production.ProductDescription,
      Description, 
      '(light NEAR aluminum) OR
      (lightweight NEAR aluminum)',
      5
   ) AS KEY_TBL
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
GO

GO

D.Dil bağımsız değişkeni belirtme

Aşağıdaki örnek kullanarak LANGUAGEdeğişkeni.

USE AdventureWorks2012
GO

SELECT FT_TBL.ProductDescriptionID,
   FT_TBL.Description, 
   KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL INNER JOIN
   CONTAINSTABLE (Production.ProductDescription,
      Description, 
      '(light NEAR aluminum) OR
      (lightweight NEAR aluminum)',
      LANGUAGE N'English',
      5
   ) AS KEY_TBL
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
GO

USE AdventureWorks2012
GO

SELECT FT_TBL.ProductDescriptionID,
   FT_TBL.Description, 
   KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL INNER JOIN
   CONTAINSTABLE (Production.ProductDescription,
      Description, 
      '(light NEAR aluminum) OR
      (lightweight NEAR aluminum)',
      LANGUAGE N'English',
      5
   ) AS KEY_TBL
   ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
GO

[!NOT]

DİL language_term bağımsız değişkenikullanmak için zorunlu değildirtop_n_by_rank.

Ayrıca bkz.

Görevler

Tam metin arama sorguları (Visual Veritabanı Araçları) oluştur

Başvuru

(Transact-sql) içerir

select (Transact-sql)

FROM (Transact-sql)

Kavramlar

SIRASI ile sınırla Arama sonuçları

Tam metin arama sorgusuyla

Tam metin arama sorgusuyla