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
SQL Server'da bir veritabanında bir tabloda veya indekslenmiş görünümde tam metin bir indeks oluşturur. Her tablo veya indeksli görünüm için yalnızca bir tam metin indeks izin verilir ve her tam metin indeks tek bir tablo veya indekslenmiş görünüm için geçerlidir. Tam metin bir indeks en fazla 1024 sütun içerebilir.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE FULLTEXT INDEX ON table_name
[ ( { column_name
[ TYPE COLUMN type_column_name ]
[ LANGUAGE language_term ]
[ STATISTICAL_SEMANTICS ]
} [ , ...n ]
) ]
KEY INDEX index_name
[ ON <catalog_filegroup_option> ]
[ WITH ( <with_option> [ , ...n ] ) ]
[;]
<catalog_filegroup_option>::=
{
fulltext_catalog_name
| ( fulltext_catalog_name , FILEGROUP filegroup_name )
| ( FILEGROUP filegroup_name , fulltext_catalog_name )
| ( FILEGROUP filegroup_name )
}
<with_option>::=
{
CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF [ , NO POPULATION ] }
| STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
| SEARCH PROPERTY LIST [ = ] property_list_name
}
Arguments
table_name
Tam metin indeksinde yer alan sütun veya sütunları içeren tablonun veya indekslenmiş görünümün adı.
column_name
Tam metin indeksinde yer alan sütunun adı. Tam metin araması için yalnızca char, varchar, nchar, nvarchar, text, ntext, image, xml ve varbinary(max) tipli sütunlar indekslenebilir. Birden fazla sütun belirtmek için column_name cümlesini aşağıdaki gibi tekrarlayın:
table_name (column_name1 [...], column_name2 [...]) ...
TIP SÜTUNU type_column_name
Bir varbinary(max) veya görüntü belgesi için belge tipini saklamak için kullanılan type_column_name tablo sütununun adını belirtir. Bu sütun, tip sütunu olarak bilinir ve kullanıcı tarafından sağlanan bir dosya uzantısı (.doc, .pdf, .xlsve benzeri) içerir. Tip sütunu char, nchar, varchar veya nvarchar tipinde olmalıdır.
TYPE COLUMN type_column_name yalnızca column_namevarbinary(max) veya görüntü sütunu belirtiyorsa, burada veri ikili veri olarak saklanıyorsa; aksi takdirde, SQL Server hata döndürür.
Uyarı
Indeksleme zamanında, Full-Text Motoru, her tablo satırının tip sütunundaki kısaltmayı kullanarak column_name'de belge için hangi tam metin arama filtresinin kullanılacağını belirler. Filtre, belgeyi ikili bir akış olarak yükler, biçimlendirme bilgilerini kaldırır ve metni belgeden kelime kesici bileşenine gönderir. Daha fazla bilgi için bkz. Arama Için Filtreleri Yapılandırma ve Yönetme.
DIL language_term
column_name'de depolanan verilerin dili.
language_term isteğe bağlıdır ve bir dilin yerel tanımlayıcısına (LCID) karşılık gelen bir dize, tam sayı veya onaltılık değer olarak belirtilebilir. Herhangi bir değer belirtilmemişse, SQL Server örneğinin varsayılan dili kullanılır.
Eğer language_term belirtilirse, temsil ettiği dil char,nchar, varchar, nvarchar, nvarchar, text ve ntext sütunlarında depolanan verileri indekslemek için kullanılır. Bu dil, sütuna karşı tam metin önleminin parçası olarak belirtilmemişse, sorgu zamanında varsayılan dil olarak language_term kullanılır.
Bir dizi olarak belirtildiğinde, language_term sistem tablosunda sys.syslanguages alias sütun değerine karşılık gelir. Dizin, 'language_term' harfindeki gibi tek tırnak içinde olması gerekir. Tamsayı olarak belirtildiğinde, language_term dili tanımlayan gerçek LCID'dir. Onaltılık değer olarak belirtildiğinde, language_term0x ardından LCID'nin altılık değeri gelir. Hex değeri, öndeki sıfırlar dahil olmak üzere sekiz haneyi aşmamalıdır.
Değer çift baytlık karakter kümesi (DBCS) biçimindeyse, SQL Server bunu Unicode'a dönüştürür.
Kelime kırıcı ve stem gibi kaynaklar, language_term olarak belirtilen dil için etkinleştirilmelidir. Eğer bu kaynaklar belirtilen dili desteklemiyorsa, SQL Server hata döndürür.
Microsoft SQL Server örneğinin varsayılan tam metin dili hakkında bilgilere erişmek için sp_configure saklanan prosedürü kullanın. Daha fazla bilgi için sp_configure (Transact-SQL) bölümüne bakınız.
Birden fazla dilde metin verisi içeren BLOB olmayan ve XML olmayan sütunlar için veya sütunda depolanan metnin dili bilinmiyorsa, nötr (0x0) dil kaynağını kullanmak uygun olabilir. Ancak önce nötr (0x0) dil kaynağını kullanmanın olası sonuçlarını anlamalısınız. Nötr (0x0) dil kaynağının kullanımının olası çözümleri ve sonuçları hakkında bilgi için bkz. Bir Full-Text Index Oluştururken Bir Dil Seç.
XML veya BLOB tipi sütunlarda saklanan belgeler için, belge içindeki dil kodlaması indeksleme sırasında kullanılır. Örneğin, XML sütunlarında, xml:lang XML belgelerindeki öznitelik dili tanımlar. Sorgu zamanında, language_term'de belirtilen değer, tam metin sorgular için varsayılan dil olur, ancak language_term tam metin sorgusunun bir parçası olarak belirtilmedikçe.
STATISTICAL_SEMANTICS
Geçerlidir: SQL Server (SQL Server 2012 (11.x) ve sonrası)
İstatistiksel anlamsal indekslemenin bir parçası olan ek anahtar ifadeler oluşturur ve benzerlik indekslerini belgeler. Daha fazla bilgi için bkz. semantik arama (SQL Server) .
ANAHTAR İNDEKS index_name
table_name'daki benzersiz anahtar indeksin adı. ANAHTAR EndİNKSİ benzersiz, tek anahtarlı, geçersiz bir sütun olmalıdır. Tam metin benzersiz anahtar için en küçük benzersiz anahtar indeksini seçin. En iyi performans için, tam metin anahtarı için tamsayı veri tipi öneriyoruz.
fulltext_catalog_name
Tam metin indeks için kullanılan tam metin katalog. Katalog zaten veritabanında var olmalı. Bu yan tümce isteğe bağlıdır. Belirtilmemişse, varsayılan bir katalog kullanılır. Varsayılan katalog yoksa, SQL Server hata döndürür.
DOSYA GRUBU filegroup_name
Belirtilen dosya grubunda belirtilen tam metin indeksi oluşturur. Dosya grubu zaten var olmalıdır. FILEGROUP cümlesi belirtilmemişse, tam metin indeks bölünmemiş bir tablo için temel tablo veya görünüm ile aynı dosya grubuna, ya da bölümlenmiş bir tablo için ana dosya grubuna yerleştirilir.
CHANGE_TRACKING [ = ] { MANUEL | AUTO | KAPALI [ , NÜFUS YOK ] }
Tam metin indeksiyle kapsanan tablo sütunlarında yapılan değişikliklerin (güncellemeler, silmeler veya eklemeler) SQL Server tarafından tam metin indeksine iletedilip taşınmayacağını belirtir. WRITETEXT ve UPDATETEXT yoluyla yapılan veri değişiklikleri tam metin indeksinde yansıtılmazdır ve değişiklik takibi ile algılanmaz.
EL İLE
İzlenen değişikliklerin ALTER FULLTEXT INDEX ... çağrısı ile manuel olarak yayılması gerektiğini belirtir BAŞLAT GÜNCELLEME NÜFUS Transact-SQL (manuel nüfus). BU Transact-SQL deyimini düzenli aralıklarla çağırmak için SQL Server Agent'ı kullanabilirsiniz.
AUTO
İzlenen değişikliklerin, veri temel tabloda (otomatik popülasyon) değiştirildikçe otomatik olarak yayıldığını belirtir. Değişiklikler otomatik olarak yayılmış olsa da, bu değişiklikler tam metin indeksinde hemen yansıtılmayabilir. AUTO varsayılan özelliktir.
KAPALI [ , nüfus yok ]
SQL Server'ın indekslenen verideki değişikliklerin listesini tutmadığını belirtir. HİÇ NÜFUS belirtilmediğinde, SQL Server oluşturulduktan sonra indeks tamamen doldurulur.
NÜFUS YOK seçeneği yalnızca CHANGE_TRACKING kapalı olduğunda kullanılabilir. HİÇ NÜFUS belirtilmediğinde, SQL Server oluşturulduktan sonra bir indeks doldurmaz. Indeks, yalnızca kullanıcı ALTER FULL TEXT INDEX komutunu START FULL POPULATION veya START INCREMENTAL POPULATION maddesiyle çalıştırdıktan sonra doldurulur.
DURDURMA LİSTEESI [ = ] { KAPALI | SISTEM | stoplist_name }
Tam metin bir durak listesini indeksle ilişkilendirir. Indeks, belirtilen durak listesine dahil olan hiçbir tokenla doldurulmaz. STOPLIST belirtilmemişse, SQL Server sistemin tam metin durdurma listesini indeksle ilişkilendirir.
OFF
Tam metin indeksiyle hiçbir durdurma listesi ilişkilendirilmediğini belirtir.
SYSTEM
Bu tam metin indeks için varsayılan tam metin sistemi STOPLIST kullanılmasını belirtir.
stoplist_name
Tam metin indeksiyle ilişkilendirilecek durak listesinin adını belirtir.
ÖZELLIK LISTESINI ARAMAK [ = ] property_list_name
Geçerlidir: SQL Server (SQL Server 2012 (11.x) ve sonrası)
Bir arama özellik listesini indeksle ilişkilendirir.
OFF
Tam metin indeksle hiçbir özellik listesinin ilişkilendirilmediğini belirtir.
property_list_name
Tam metin indeksiyle ilişkilendirilecek arama özellik listesinin adını belirtir.
Açıklamalar
XML sütunlarında, XML öğelerinin içeriğini indeksleyen ancak XML işaretlemesini görmezden gelen tam metin bir indeks oluşturabilirsiniz. Özellik değerleri, sayısal değerler olmadıkça tam metin olarak indekslenir. Element etiketleri token sınırları olarak kullanılır. İyi oluşturulmuş XML veya HTML belgeleri ve birden fazla dil içeren parçalar desteklenir. Daha fazla bilgi için bkz. XML Sütunlarıyla arama Full-Text kullanma.
Endeks anahtarı sütununun tam sayı veri tipi olmasını öneriyoruz. Bu, sorgu yürütme zamanında optimizasyonlar sağlar.
CREATE FULL TEXT INDEX bir kullanıcı işleminin içine yerleştirilemez. Bu ifade kendi örtük işleminde çalıştırılmalıdır.
Tam metin indeksler hakkında daha fazla bilgi için Oluştur ve Full-Text İndeksleri Yönet bölümünü inceleyebilirsiniz.
Değişim takibi ile NOT POPÜLASYON parametresi arasındaki etkileşimler
Tam metin indeksinin doldurulması, değişim takibi etkinleştirilip etkinleştirilmediğine ve ALTER FULLTEXT INDEX ifadesinde WITH NO POPULATION belirtilmesine bağlıdır. Aşağıdaki tablo, etkileşimlerinin sonucunu özetlemektedir.
| Change Tracking | NÜFUSSUZ | Result |
|---|---|---|
| Etkinleştirilmedi | Belirtilmemiş | Tam bir popülasyon indeks üzerinde yapılır. |
| Etkinleştirilmedi | Belirtilen | Indeksin popülasyonu, TAM METİN EndİNKSİNİ DEĞIŞTIRİNE KADAR GERÇEKLEŞMEZ... BAŞLANGIÇ NÜFUS beyannamesi yayımlanır. |
| Etkinleştirildi | Belirtilen | Bir hata ortaya çıkar ve indeks değiştirilmez. |
| Etkinleştirildi | Belirtilmemiş | Tam bir popülasyon indeks üzerinde yapılır. |
Tam metin indekslerin doldurulması hakkında daha fazla bilgi için Nüfus Full-Text İndeksleri sayfasına bakınız.
Permissions
Kullanıcının REFERENCES tam metin katalogda ve ALTER tabloda veya indekslenmiş görünümde iznine sahip olmalı, sabit sunucu rolünün üyesi sysadmin olmalı, db_ownerdb_ddladmin ya da sabit veritabanı rollerinde bulunmalıdır.
Belirtilmişse SET STOPLIST , kullanıcının belirtilen durak listesinde REFERENCES iznine sahip olması gerekir. DURDURMA Listesi'nin sahibi bu izni verebilir.
Uyarı
Kamuya, SQL Server ile birlikte gönderilen varsayılan durak listesine REFERANS izni verilir.
Örnekler
A. Benzersiz bir indeks, tam metin katalog ve tam metin bir indeks oluşturun
Aşağıdaki örnek, AdventureWorks2025 örnek veritabanının tablosunun sütununda JobCandidateID benzersiz bir indeks HumanResources.JobCandidate oluşturur. Örnek daha sonra varsayılan tam metin katalog oluşturur, ft. Son olarak, örnek katalog ve sistem durak listesi kullanarak Resume sütunda ft tam metin bir indeks oluşturur.
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume)
KEY INDEX ui_ukJobCand
WITH STOPLIST = SYSTEM;
GO
B. Birkaç tablo sütununda tam metin bir indeks oluşturun
Aşağıdaki örnek, production_catalogAdventureWorks örnek veritabanında bir tam metin kataloğu oluşturur. Örnek daha sonra bu yeni kataloğu kullanan bir tam metin dizini oluşturur. Tam metin indeksiReviewerNameEmailAddress, ve Comments sütunlarında yer alır.Production.ProductReview Her sütun için örnek, sütunlardaki verilerin dili olan İngilizce'nin 1033LCID'sini belirtir. Bu tam metin indeks, mevcut benzersiz bir anahtar indeksi olan PK_ProductReview_ProductReviewID. Önerilen gibi, bu indeks anahtarı tam sayı sütununda, ProductReviewID.
CREATE FULLTEXT CATALOG production_catalog;
GO
CREATE FULLTEXT INDEX ON Production.ProductReview (
ReviewerName LANGUAGE 1033,
EmailAddress LANGUAGE 1033,
Comments LANGUAGE 1033
) KEY INDEX PK_ProductReview_ProductReviewID ON production_catalog;
GO
C. Arama özellik listesini doldurmadan tam metin bir indeks oluşturun
Aşağıdaki örnek, Title , , ve DocumentSummary tablodaki sütunlarda tam metin bir indeks DocumentProduction.Documentoluşturur. Örnek, sütunlardaki verilerin dili olan İngilizce'nin 1033LCID'sini belirtir. Bu tam metin indeks, varsayılan tam metin kataloğunu ve mevcut benzersiz anahtar indeksi olan PK_Document_DocumentID. Önerilen gibi, bu indeks anahtarı tam sayı sütununda, DocumentID.
Örnek, SYSTEM durak listesini belirtir. Ayrıca bir arama özellik listesi belirtir; DocumentPropertyListbu özellik listesini oluşturan bir örnek için bkz. ARAMA ÖZELLIK LISTESI OLUŞTUR (Transact-SQL)
Örnek, nüfus olmadan değişiklik takibinin kapalı olduğunu belirtir. Daha sonra, yoğun olmayan saatlerde, örnek yeni indekste tam bir popülasyonu başlatmak ve otomatik değişiklik takibi etkinleştirmek için ALTER FULL TEXT INDEX ifadesi kullanır.
CREATE FULLTEXT INDEX ON Production.Document (
Title LANGUAGE 1033,
DocumentSummary LANGUAGE 1033,
Document TYPE COLUMN FileExtension LANGUAGE 1033
) KEY INDEX PK_Document_DocumentID
WITH STOPLIST = SYSTEM,
SEARCH PROPERTY LIST = DocumentPropertyList,
CHANGE_TRACKING OFF,
NO POPULATION;
GO
Daha sonra yoğun olmayan bir zamanda dizin doldurulur:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO;
GO