Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Karakter tabanlı veri türleri içeren tam metin dizinli sütunlarda SQL Server tam metin araması yapmak için Transact-SQL SELECT deyiminin Transact-SQL WHERE yan tüm cesinde kullanılan bir koşuldur. Bu koşul, yalnızca arama koşulundaki sözcüklerin tam ifadeleriyle değil, anlamla eşleşen değerleri arar. FREETEXT kullanıldığında, tam metin sorgu altyapısı freetext_stringüzerinde dahili olarak aşağıdaki eylemleri gerçekleştirir, her terimi bir ağırlık atar ve eşleşmeleri bulur:
Dizeyi sözcük sınırlarına (sözcük ayırıcı) göre tek tek sözcüklere ayırır.
Sözcüklerin (stemming) etkili biçimlerini oluşturur.
Eş anlamlılar sözlüğündeki eşleşmelere göre terimler için genişletmelerin veya değiştirmelerin listesini tanımlar.
Note
SQL Server tarafından desteklenen tam metin arama biçimleri hakkında bilgi için bkz. Full-Text Aramaile sorgu
için geçerlidir: SQL Server ( SQL Server 2008 (10.0.x) ile geçerli sürüm).
Transact-SQL söz dizimi kuralları
Syntax
FREETEXT ( { column_name | (column_list) | * }
, 'freetext_string' [ , LANGUAGE language_term ] )
Arguments
column_name
FROM yan tümcesinde belirtilen tablonun bir veya daha fazla tam metin dizinli sütununun adıdır. Sütunlar char, varchar, nchar, nvarchar, metintüründe olabilir . ntext, resim, xml, varbinaryveya varbinary(max).
column_list
Virgülle ayrılmış birkaç sütunun belirtilebileceğini gösterir.
column_list parantez içine alınmalıdır.
language_term belirtilmediği sürece, column_list tüm sütunlarının dili aynı olmalıdır.
*
Verilen freetext_stringaramak için tam metin araması için kaydedilmiş tüm sütunların kullanılması gerektiğini belirtir. FROM yan tümcesinde birden fazla tablo varsa, * tablo adıyla nitelenmelidir.
language_term belirtilmediği sürece, tablonun tüm sütunlarının dili aynı olmalıdır.
freetext_string
column_nameiçinde aranacak metindir. Sözcükler, tümcecikler veya tümceler de dahil olmak üzere tüm metinler girilebilir. Herhangi bir terim veya terimin formları tam metin dizininde bulunursa eşleşmeler oluşturulur.
VE'nin bir anahtar sözcük olduğu CONTAINS ve CONTAINSTABLE arama koşulunun aksine, 've' sözcüğü freetext_string kullanıldığında bir kirli sözcük olarak kabul edilir veya stopwordatılır.
WEIGHT, FORMSOF, joker karakterler, NEAR ve diğer söz dizimlerinin kullanılmasına izin verilmez. freetext_string sözcük kırılır, kökü oluşturulur ve eş anlamlılar sözlüğünden geçirilir.
freetext_stringnvarchar. Giriş olarak başka bir karakter veri türü kullanıldığında örtük dönüştürme gerçekleşir. Büyük dize veri türleri nvarchar(max) ve varchar(max) kullanılamaz. Aşağıdaki örnekte, @SearchWordolarak tanımlanan varchar(30) değişkeni, FREETEXT koşulunda örtük bir dönüştürmeye neden olur.
USE AdventureWorks2022;
GO
DECLARE @SearchWord VARCHAR(30)
SET @SearchWord ='performance'
SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, @SearchWord);
Dönüştürmede "parametre algılama" çalışmadığından, daha iyi performans için nvarchar kullanın. Örnekte, @SearchWordnvarchar(30)olarak bildirin.
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30)
SET @SearchWord = N'performance'
SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, @SearchWord);
İyileştirme amaçlı olmayan bir planın oluşturulduğu durumlar için OPTIMIZE FOR sorgu ipucunu da kullanabilirsiniz.
DIL language_term
Kaynakları, sorgunun bir parçası olarak sözcük kesme, sözcük kökü oluşturma ve eş anlamlılar sözlüğü ve stopword kaldırma için kullanılacak dildir. Bu parametre isteğe bağlıdır ve bir dilin yerel ayar tanımlayıcısına (LCID) karşılık gelen bir dize, tamsayı veya onaltılık değer olarak belirtilebilir.
language_term belirtilirse, temsil ettiği dil arama koşulunun tüm öğelerine uygulanır. Değer belirtilmezse, sütun tam metin dili kullanılır.
Farklı dillerdeki belgeler tek bir sütunda ikili büyük nesneler (BLOB) olarak birlikte depolanıyorsa, belirli bir belgenin yerel ayar tanımlayıcısı (LCID), içeriğini dizine almak için hangi dilin kullanıldığını belirler. Böyle bir sütunu sorgularken, Dİl language_term belirtmek iyi bir eşleşme olasılığını artırabilir.
Dize olarak belirtildiğinde language_term, sys.syslanguages uyumluluk görünümündeki diğer ad sütun değerine karşılık gelir. Dize, 'language_term' içinde olduğu gibi tek tırnak içine alınmalıdır. Tamsayı olarak belirtildiğinde, language_term dili tanımlayan gerçek LCID'dir. Onaltılık değer olarak belirtildiğinde, language_term 0x olur ve bunu LCID'nin onaltılık değeri izler. Onaltılık değer, baştaki sıfırlar da dahil olmak üzere sekiz basamağı aşmamalıdır.
Değer çift baytlık karakter kümesi (DBCS) biçimindeyse, Microsoft SQL Server bunu Unicode'a dönüştürür.
Belirtilen dil geçerli değilse veya bu dile karşılık gelen hiçbir kaynak yüklü değilse, Microsoft SQL Server bir hata döndürür. Nötr dil kaynaklarını kullanmak için 0x0 language_termolarak belirtin.
Genel Açıklamalar
Tam metin önkoşulları ve işlevleri, FROM koşulunda yer alan tek bir tabloda çalışır. Birden çok tabloda arama yapmak için FROM yan tümcenizde birleştirilmiş bir tablo kullanarak iki veya daha fazla tablonun ürünü olan bir sonuç kümesinde arama yapın.
FREETEXT kullanan tam metin sorguları, CONTAINS kullanan tam metin sorgularından daha az kesindir. SQL Server tam metin arama altyapısı önemli sözcükleri ve tümcecikleri tanımlar. CONTAINS koşulunun <contains_search_condition> parametresinde belirtildiğinde genellikle anlamı olan ayrılmış anahtar sözcüklere veya joker karakterlere özel bir anlam verilmez.
Veritabanı uyumluluk düzeyi 100 olarak ayarlandığında OUTPUT yan tümcesinde tam metin koşullarına izin verilmez.
Note
FREETEXTTABLE işlevi, FREETEXT koşuluyla aynı tür eşleşmeler için kullanışlıdır. Bu işleve, SELECT deyiminin FROM yan tümcesinde normal bir tablo adı gibi başvurabilirsiniz. Daha fazla bilgi için bkz. FREETEXTTABLE (Transact-SQL)
Uzak Sunucuları Sorgulama
Bağlı bir sunucudaki hedef tabloların tam metin dizinli sütunlarını sorgulamak için CONTAINS veya FREETEXT koşulunda dört bölümlü bir ad kullanabilirsiniz. Bir uzak sunucuyu tam metin sorguları almaya hazırlamak için, uzak sunucudaki hedef tablolarda ve sütunlarda tam metin dizini oluşturun ve ardından uzak sunucuyu bağlı sunucu olarak ekleyin.
LIKE ile Full-Text Arama karşılaştırması
Tam metin aramasının aksine, likeTransact-SQL
Examples
A. Belirtilen karakter değerlerini içeren sözcükleri aramak için FREETEXT kullanma
Aşağıdaki örnek yaşamsal, güvenlik ve bileşenlerle ilgili sözcükleri içeren tüm belgeleri arar.
USE AdventureWorks2022;
GO
SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, 'vital safety components' );
GO
B. FREETEXT'i değişkenlerle kullanma
Aşağıdaki örnekte belirli bir arama terimi yerine bir değişken kullanılır.
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30);
SET @SearchWord = N'high-performance';
SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, @SearchWord);
GO
Ayrıca Bkz.
Full-Text Arama Kullanmaya Başlama
Full-Text Katalog oluşturma ve yönetme
TAM METIN KATALOG OLUŞTUR (Transact-SQL)
TAM METİN İNDEKSİ OLUŞTUR (Transact-SQL)
Full-Text Dizin oluşturma ve yönetme
Full-Text Arama
Full-Text Arama Sorguları Oluşturma (Visual Database Araçları)
İÇERİR (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
Veri Türleri (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
BURADA (Transact-SQL)