Aracılığıyla paylaş


Tam metin doğrulamaları ve işlevler genel bakış

Tam metin sorguları (CONTAINSTABLE ve FREETEXTTABLE) ve tam metin koşullarına (içerir ve FREETEXT) kullanın.Bu destek zenginTransact-SQLsözdizimi, destekleyen çeşitli formların sorgu terimleri.Tam metin sorguları yazmak amacıyla, bilgi gerekir ve bunları nasıl yüklemleri ve çalışır.Bu konu, koşullarına ve işlevlerini özetler ve commonalities CONTAINS karşılaştırma ve CONTAINSTABLE işlev anlatılmaktadır.

Full-Text genel bakış (içerir ve FREETEXT) yüklemleri

İÇERİR ve FREETEXT nerede belirtilir veya SELECT deyiminin HAVING yan tümce.Diğer biriyle birleştirilebilirTransact-SQLkoşullarına LIKE gibi BETWEEN.

İÇERİR ve FREETEXT koşullarına TRUE veya FALSE değerini döndürür.Bunlar yalnızca belirli bir satırın tam metin sorgusu eşleşip eşleşmediğini belirlemek için seçim ölçütü belirlemek için kullanılabilir.Eşleşen satırları, sonuç kümesinde döndürülür.

İÇERİR veya FREETEXT kullanırken, aranacak tabloda tek bir sütun, sütun listesini veya tüm sütunlar belirtebilirsiniz.İsteğe bağlı olarak, kaynak tarafından tam metin sorgusu kesiliyor ve dallanma sözcük, sözlük aramaları ve etkisiz sözcük kaldırma için kullanılacak dil belirtebilirsiniz.

İÇERİR ve FREETEXT eşleşmeler, farklı türde yararlı şunlardır:

  • Kesin veya bulanık (daha az kesin) eşleşen sözcükleri ve tümceleri, sözcüklerin birbirine, belirli bir mesafe içinde yakınlık veya ağırlıklı eşleşmeleri içerir (veya CONTAINSTABLE) kullanın.CONTAINS kullanırken, aramakta olduğunuz metni belirten en az bir arama koşulu ve eşleşen belirleyen koşulları belirtmeniz gerekir.

    Arama koşulları arasındaki mantıksal işlemi kullanabilirsiniz.Daha fazla bilgi için bkz:Kullanarak Boole işleçleri — AND, OR ve NOT (olarak içerir ve CONTAINSTABLE), daha sonra bu konuda.

  • Ne anlama geldiğini, ancak belirli sözcükleri, tümcecikleri veya cümle tam ifade değil eşleştirmek için kullanım FREETEXT (veya FREETEXTTABLE) ( freetext dize ). Eşleşen bir terim veya formun bir terim belirtilen, tam metin dizininde bulunursa oluşturulur sütun.

Bağlantılı sunucuları sorguları yürütmek için içerir veya FREETEXT four-part adları kullanabilirsiniz.Daha fazla bilgi için bkz:Bağlantılı sunucular (tam metin araması) sorgulanıyor..

Sözdizimi ve bu koşullarına bağımsız değişkenleri hakkında bilgi için bkz:CONTAINS (Transact-SQL)veFREETEXT (Transact-SQL).

Not

Tam metin koşullarına verilmezOUTPUT yan tümce Veritabanı uyumluluk düzey 100 olarak ayarlandığında.

Örnekler

C.CONTAINS ile kullanma<simple_term>

Aşağıdaki örnek, tüm ürünlerde fiyatı bulur$80.99sözcüğü içeren"Mountain".

USE AdventureWorks;
GO
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
   AND CONTAINS(Name, 'Mountain');
GO

B.FREETEXT belirtilen karakter değerleri içeren sözcükleri aramak için kullanma

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

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

Tam metin işlevleri (CONTAINSTABLE ve FREETEXTTABLE) genel bakış

SELECT deyiminin FROM yan tümcesinde normal tablo adı gibi CONTAINSTABLE ve FREETEXTTABLE işlevleri başvurulur.Bunlar, bir tablo sıfır, bir veya daha fazla tam metin sorgusu eşleşen satırları döndürür.Verilen tablonun tam metin araması durumu belirtilen seçim ölçütü karşılayan yalnızca temel tablo satırı içeren işlev.

Bu işlevlerden birini kullanarak sorguları bir ilgiye değer (RANK) ve her satır için tam metin anahtar (KEY) gibi derecelendirme döndürür:

  • anahtar sütununu

    ANAHTAR sütun, döndürülen satırların benzersiz değerler verir.ANAHTAR sütun, seçim ölçütlerini belirtmek için kullanılabilir.

  • RANK sütun

    The RANK sütun döndüren birsıra değeri ne kadar iyi seçim ölçütü. eşleşen satır gösteren her satır için Daha yüksek sıra değer metin veya satır için verilen tam metin sorgusu olan bir satır, daha çok ilgili belgede.Farklı satırlarına aynı olduklarına olduğunu unutmayın.Eşleşmeler belirterek isteğe bağlı verilen sayısını sınırlamaktop_n_by_rankparametre.Daha fazla bilgi için bkz:Ranked sonuç kümesi (tam metin araması) sınırlamaveArama sorgu sonuçlar (tam metin araması) nasıl derecelendirilir.

Bu işlevlerden birini kullanarak, temel belirtmelisiniz tablo olan tam-metin arama için.İle yüklemler, tek bir sütun, sütun listesini veya tüm sütunlar belirtebilirsiniz gibi tablo aranması için ve isteğe bağlı olarak, kaynak kullanılacak tarafından tam metin sorgusu dili.

İÇERİR ve FREETEXTTABLE eşleşmeleri aynı tür FREETEXT olarak yararlı CONTAINSTABLE aynı türde eşleşmeleri için yararlıdır.Daha fazla bilgi için bkz:Full-Text bakış yüklemleri (içerir ve FREETEXT), daha önce bu topic.When, açıkça döndürülen satırların Satır SQL Servertemel tablo. katılmalısınız CONTAINSTABLE ve FREETEXTTABLE işlevlerini kullanan sorguları çalıştırma

Bu işlevler, bağımsız ve sözdizimi hakkında bilgi için bkz:CONTAINSTABLE (Transact-SQL)veFREETEXTTABLE (Transact-SQL).

Örnekler

C.CONTAINSTABLE kullanarak

Aşağıdaki örnek, tüm yiyecek kategorileri açıklamasını ve kategori adını verirAçıklama sütun "sauces" sözcüğü veya word "candies." "Lezzetli ve savory" sözcüklerini içerir Bir kategori adı "Deniz ürünü" tüm satırlarla gözardı. Yalnızca bir derece değeri olan satırları 2 veya daha yüksek döndürülür.

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

B.FREETEXTTABLE kullanma

Aşağıdaki örnekte, ilk yüksek ranked satırları döndürür ve her satırın sıralaması için seçim listesi eklemek için FREETEXTTABLE sorgu genişletir.Sorgu için gereken bildiğinizCategoryIDKategorileriçin benzersiz anahtar sütun olan tablo.

USE Northwind;
GO
SELECT KEY_TBL.RANK, FT_TBL.Description
FROM Categories AS FT_TBL 
     INNER JOIN
     FREETEXTTABLE(Categories, Description,
                    'How can I make my own beers and ales?') AS KEY_TBL
     ON FT_TBL.CategoryID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC;
GO

Yalnızca 10 veya daha büyük sıralama değerine sahip satırları döndürür aynı sorguyu uzantısı aşağıdadır:

USE Northwind;
GO
SELECT KEY_TBL.RANK, FT_TBL.Description
FROM Categories FT_TBL 
     INNER JOIN
     FREETEXTTABLE (Categories, Description,
                    'How can I make my own beers and ales?') AS KEY_TBL
     ON FT_TBL.CategoryID = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK >= 10
ORDER BY KEY_TBL.RANK DESC;
GO

Boole işleçleri kullanmak; AND, OR ve NOT (olarak içerir ve CONTAINSTABLE)

Aynı arama koşullarını CONTAINS karşılaştırma ve CONTAINSTABLE işlevini kullanın.Çeşitli arama terimleri Boole işleçleri kullanarak birleştirme her ikisini de destekler; AND, OR ve NOT; Boole işlemleri gerçekleştirmek için.Kullandığınız ve örneğin bulmak için hem de "latte" ve "New York tarzı bagel" içeren satırlar.AND NOT, örneğin, "bagel" içerir, ancak "dondurma cheese" içeren satırları bulmak için kullanabilirsiniz.

Not

Aksine, FREETEXT ve FREETEXTTABLE aranacak sözcük olarak Boole koşullarını kabul.

CONTAINS kullanan mantıksal işleçler AND, OR ve NOT, bkz: diğer koşullarına ile birleştirme hakkında bilgi içinArama koşulu (Transact-SQL).

Örnek

Aşağıdaki örnek, ProductDescription tablosunu kullanırAdventureWorksveritabanı.CONTAINS karşılaştırma arama açıklaması, açıklama kimliği 5 eşit değildir, açıklama, "Alüminyum" sözcüğü hem de "milli." sözcüğünü içeren sorgu kullanır Arama koşulu kullanan ve Boole işleç.

USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
   CONTAINS(Description, ' Aluminum AND spindle');
GO

Ek ana hatları

Each full-text enabled table has a column that is used to enforce unique rows for the table (the uniquekey column).Tam metin sorguları CONTAINSTABLE veya FREETEXTTABLE türü yazarken, benzersiz anahtar adını duyduğunuz sütun.Daha fazla bilgi için bkz:Nasıl Yapılır: Tam metin anahtarını sütun (Transact-SQL) hakkında sorgula.

Çok sayıda sorgu terimleri sözcük ayırıcısı davranış yoğun olarak değişir.Doğru sözcük ayırıcısı (ve sözcük kökü ayırıcı) kullandığınızdan emin olmak için ve eş anlamlılar dosyası, bu öneririz LANGUAGE bağımsız değişkeni belirtin.Daha fazla bilgi için bkz:Bir tam metin dizini oluşturma, bir dil seçme ile ilgili en iyi yöntemler.

tam metin sorgusu tanımlarken, tam metin alt yapısı arama ölçütü stopwords (gürültü sözcükleri de denir) atar."A" gibi sözcükler "ve" "değil" ya "da," sık sık oluşabilir, ancak, genellikle belirli bir metin için arama yaparken yardımcı olmazsa, Stopwords olur.Stopwords bir stoplist listelenir.Her tam metin dizini hangi stopwords sorgu ya da dizin saat dizin oluşturma sırasında göz ardı edilir belirleyen özel stoplist ilişkilidir.Daha fazla bilgi için bkz:Stopwords ve Stoplists.

Eş anlamlılar sözlüğü eşleşen içerir ve CONTAINSTABLE oluşurTransact-SQLsorgu FORMSOF eş anlamlılar sözlüğü yan belirtin ve FREETEXT ve FREETEXTABLE sorgular varsayılan.