Tam metin yüklemler ve işlevleri genel bakış
Tam metin sorguları tam metin yüklemler (CONTAINS ve freetext) ve işlevleri (CONTAINSTABLE ve freetexttable) kullanın.Bunlar zengin destek Transact-SQL sözdizimini destekler çeşitli biçimlerde sorgu terimleri.Tam metin sorguları yazmak için ne zaman öğrenmek gerekir ve bunlar nasıl yüklemleri ve işlevleri.Bu konuda yüklemler ve işlevlerini özetler ve commonalities arasında CONTAINS ve CONTAINSTABLE işlev anlatılmaktadır.
Tam metin genel bakış (CONTAINS ve freetext) yüklemleri
CONTAINS ve freetext nerede belirtilmiş veya HAVING yan tümce tümce tümce, bir select deyim.Bunların hiçbirini diğeri ile birleştirilebilir Transact-SQL benzer gibi yüklemleri ve between.
CONTAINS ve freetext yüklemler true ya da false değerini döndürür.Bunlar yalnızca belirli bir satır tam metin sorgusu eşleşip eşleşmediğini belirlemek için seçim ölçütü belirtmek için kullanılır.Eşleşen satırları sonuç küme döndürülen.
CONTAINS veya freetext kullanırken, tek bir sütun, sütunların listesi veya tüm sütunlara belirtmek tablo aranacak.İsteğe bağlı olarak, kaynakları tarafından tam metin sorgusu kesiliyor ve dallanma word sözlük aramaları ve etkisiz sözcük kaldırma için kullanılacak dili belirtebilirsiniz.
CONTAINS ve freetext eşleşmeler, farklı türde yararlı şunlardır:
İÇERİR (veya CONTAINSTABLE) kesin veya bulanık (daha az kesin) eşleşmeleri tek sözcük ve tümcecikleri, birbirleriyle belirli bir mesafe içinde sözcüklerin yakınlık veya ağırlıklı eşleşmeleri için kullanın.İÇERİR kullanırken, aradığınız metni belirten en az bir arama koşulu eşleşmeleri 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 yok (CONTAINS ve CONTAINSTABLE), daha sonra bu konudaki.
Serbest metin (veya freetexttable) ne anlama geldiğini, ancak değil doğru yazılış eşleştirmek için belirtilen sözcükleri, sözcük gruplarını veya cümleler kullanın ( freetext dize).Herhangi bir terim veya herhangi bir terimin formu belirtilen sütun tam metin dizininde bulunursa, eşleşmeleri üretilir.
Bağlantılı sunucularda sorguları yürütmek için CONTAINS veya freetext değeri aygıtınkiyle tam olarak adları kullanabilirsiniz.Daha fazla bilgi için bkz: Bağlantılı sunucular (tam metin araması) sorgulama.
Sözdizimi ve bağımsız değişkenleri bu yüklemler hakkında daha fazla bilgi için bkz: CONTAINS (Transact-SQL) ve freetext (Transact-sql).
Not
Tam metin yüklemler kabul edilmez output yan tümcesi veritabanı uyumluluk düzey olduğunda küme 100.
Örnekler
A.İle CONTAINS kullanma <simple_term>
Aşağıdaki örnek, tüm ürünlerde fiyatı bulur $80.99 sözcüğü içeren "Mountain".
USE AdventureWorks2008R2;
GO
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
AND CONTAINS(Name, 'Mountain');
GO
B.Belirtilen karakter değerleri içeren sözcükleri aramak için freetext kullanma
Aşağıdaki örnek, sözcükler için hayati önem taşıyan, ilgili emniyet, bileşenleri içeren tüm belgeleri arar.
USE AdventureWorks2008R2;
GO
SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, 'vital safety components' );
GO
Tam metin işlevleri (CONTAINSTABLE ve freetexttable) genel bakış
CONTAINSTABLE ve freetexttable fonksiyonlarını normal bir tablo adı seçin, from yan tümce tümce tümcesinde gibi başvurulan deyim.Döndürmeleri bir tablo , sıfır, bir ya da daha fazla tam metin sorgusu eşleşen satırları.Döndürülen tablo tam metin içinde belirtilen seçim ölçütü ile eşleşen yalnızca temel tablo satırları içeren arama koşulu işlevi.
Bu işlevlerden birini kullanarak sorguları gibi değer (rank) ve her satır için tam metin anahtarını (anahtar) derecelendirme bir uygunluğu döndürür:
ANAHTARsütun
ANAHTAR sütun döndürülen satırların benzersiz değerleri döndürür.ANAHTAR sütun seçim ölçütlerini belirtmek için kullanılır.
rank sütun
rank sütun döndürür bir rank değeri her satır satır seçim ölçütlerini ne kadar iyi eşleştiğini gösterir.En yüksek rütbe değer metin veya satır için verilen tam metin sorgusu olan bir satır, daha çok ilgili belgede.Not farklı satırlardaki özdeş olarak sıralanabilir.İsteğe bağlı belirterek iade edilmesi için eşleşme sayısını sınırlayabilirsiniz top_n_by_rank parametresi.Daha fazla bilgi için bkz: Ranked sonuç kümeleri (tam metin araması) sınırlama ve (Tam metin araması) arama sonuçlarının nasıl derecelendirilir.
Bu işlevlerden herhangi birini kullanırken, tam metin arama yapılacak temel tablo belirtmeniz gerekir.Yüklemler ile tek bir sütun, sütunların listesi veya tüm sütunlara belirtebileceğiniz gibi tablo aranacak ve isteğe bağlı olarak, kaynakları kullanılacak tarafından tam metin sorgusu dili.
İÇERİR ve freetexttable, serbest metin olarak aynı türden eşleşmeleri için yararlı CONTAINSTABLE aynı türde eşleşmeleri için yararlıdır.Daha fazla bilgi için bkz: tam metin doğrulamaları (CONTAINS ve freetext) bakış, bu konudaki eski.CONTAINSTABLE ve freetexttable fonksiyonlarını kullanan sorguları çalıştırıldığında, açıkça gerekir birleştirmek döndürülen satır satır ile SQL Server temel tablo.
Sözdizimi ve bu işlevlerin bağımsız değişkenleri hakkında daha fazla bilgi için bkz: CONTAINSTABLE (Transact-sql) ve freetexttable (Transact-sql).
Örnekler
A.CONTAINSTABLE kullanarak
Aşağıdaki örnek, tüm Yiyecek kategorileri açıklamasını ve kategori adını döndürür Açıklama sütun içeren sözcükleri "Tatlı ve savory" yakın bir yerde ya da word "sauces" veya Word ' ün "candies." Kategori adı "Deniz ürünleri" ile tüm satırlar gözardı edilir.Yalnızca rütbe 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 kullanarak
Aşağıdaki örnek bir freetexttable sorgu ilk yüksek ranked satırları döndürmek için ve her satır sıralaması için seçim listesi eklemek için genişletir.Sorgu belirtmek için bilmeniz gerekir CategoryID için benzersiz anahtar sütunu olan Kategoriler 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 rütbe değeri olan satırları döndüren aynı sorgu 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çlerini kullanarak — ve, veya ve değil (içinde CONTAINS ve CONTAINSTABLE)
CONTAINS ve CONTAINSTABLE işlev aynı arama koşullarını kullanın.Hem de birkaç arama terimleri Boole işleçleri kullanarak birleştirme desteği — ve, veya ve değil — mantıksal işlemleri gerçekleştirmek için.Kullanabilirsiniz ve, örneğin, bulmak için her iki "latte" içeren satırları ve "New York tarzı bagel".VE değil, örneğin, "bagel" içeren satırları bulmak için kullanabileceğiniz Ancak, "Biliyorsun Peynir" içerir.
Not
Buna karşılık, freetext ve freetexttable Boole şartları aranacak sözcük kabul et.
VE, veya, mantıksal işleçler kullanan ve görmek değil, diğer yüklemler CONTAINS birleştirme hakkında bilgi Arama koşulu (Transact-sql).
Örnek
Aşağıdaki örnek ProductDescription tablo , AdventureWorks2008R2 veritabanı.Sorgu CONTAINS tanımı kimliği 5'e eşit değil ve her iki sözcüğü "Alüminyum" açıklamasını içeren açıklamaları için arama yapmak için kullanır. "mil" sözcüğü ile Arama koşulu ve Boole işleç kullanır.
USE AdventureWorks2008R2;
GO
SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
CONTAINS(Description, ' Aluminum AND spindle');
GO
Dikkat edilecek diğer noktalar
Each full-text enabled table has a column that is used to enforce unique rows for the table (the uniquekey column).Tam metin sorguları freetexttable CONTAINSTABLE ya da 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 sütunu (Transact-SQL) hakkında sorgulama.
Çok sayıda sorgu terimleri sözcük ayırıcı davranışı üzerinde 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ı öneririz dil bağımsız değişkeni belirtin.Daha fazla bilgi için bkz: Tam metin dizini oluşturma, bir dil seçme en iyi yöntemler.
tam metin sorgusu tanımlarken, tam-metin arama motoru arama ölçütlerini stopwords (gürültü sözcükleri de denir) atar.Stopwords sözcük olarak "a" olan "ve" "değil" veya "" sık sık ortaya çıkabilir ancak, genellikle belirli bir metin aranmasına, yardımcı değil.İçinde bir stoplist Stopwords listelenir.Her tam metin dizini belirli bir stoplist, hangi stopwords sorgu veya dizin saat dizin oluşturma sırasında göz ardı edilir belirler ile ilişkilendirilir.Daha fazla bilgi için bkz: Stopwords ve Stoplists.
Eş anlamlılar sözlüğü eşleştirme için CONTAINS ve CONTAINSTABLE oluşur Transact-SQL sorgu BİÇİMLERİYLE eş ANLAMLILAR yan tümce tümce tümcesinde belirtin ve freetext ve freetextable için sorgular tarafından varsayılan.
Ayrıca bkz.