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 tam metin indeksin özelliklerini değiştirir.
Transact-SQL söz dizimi kuralları
Sözdizimi
ALTER FULLTEXT INDEX ON table_name
{ ENABLE
| DISABLE
| SET CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF }
| ADD ( column_name
[ TYPE COLUMN type_column_name ]
[ LANGUAGE language_term ]
[ STATISTICAL_SEMANTICS ]
[ , ...n ]
)
[ WITH NO POPULATION ]
| ALTER COLUMN column_name
{ ADD | DROP } STATISTICAL_SEMANTICS
[ WITH NO POPULATION ]
| DROP ( column_name [ , ...n ] )
[ WITH NO POPULATION ]
| START { FULL | INCREMENTAL | UPDATE } POPULATION
| { STOP | PAUSE | RESUME } POPULATION
| SET STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
[ WITH NO POPULATION ]
| SET SEARCH PROPERTY LIST [ = ] { OFF | property_list_name }
[ WITH NO POPULATION ]
}
[ ; ]
Arguments
table_name
Tam metin indeksinde yer alan sütun veya sütunları içeren tablonun veya indekslenmiş görünümün adı. Veritabanı ve tablo sahibi adlarının belirtilmesi isteğe bağlıdır.
ETKİnLEŞTİr | DEVRE DIŞI BIRAKMAK
SQL Server'a table_name için tam metin indeks verisi toplap toplamayacağını söyler. ENABLE tam metin dizini etkinleştirir; DISABLE tam metin dizini kapatıyor. Indeks devre dışı bırakıldığı sürece tablo tam metin sorguları desteklemez.
Tam metin indeksini devre dışı bırakmak değişiklik takibi kapatmanıza olanak tanır ama tam metin indeksi tutar ve istediğiniz zaman ENENABLE ile yeniden etkinleştirebilirsiniz. Tam metin indeks devre dışı bırakıldığında, tam metin indeks meta verileri sistem tablolarında kalır. Tam metin indeks devre dışı bırakıldığında CHANGE_TRACKING etkinleştirilmiş durumdaysa, indeks durumu donuyor, devam eden tarama duruyor ve tablo verilerindeki yeni değişiklikler takip edilmez veya indekse iletilmez.
SET CHANGE_TRACKING { MANUAL | AUTO | KAPALI }
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 iletilmeyeceğini 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.
Uyarı
Daha fazla bilgi için bkz. Değişim İzleme ve PİSİLTİ YOK Parametre Etkileşimleri.
EL İLE
İzlenen değişikliklerin ALTER FULLTEXT INDEX çağrılarak manuel olarak yayıldığını 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.
OFF
SQL Server'ın indekslenen verideki değişikliklerin listesini tutmadığını belirtir.
ADD | BIRAK column_name
Tam metin indeksinden eklenecek veya silinecek sütunları belirtir. Sütun veya sütunlar char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary veya varbinary(max) tipinde olmalıdır.
DROP maddesini yalnızca daha önce tam metin indeksleme için etkinleştirilmiş sütunlarda kullanın.
Bu özellikleri column_name üzerinde ayarlamak için TYPE COLUMN ve LANGUAGE ile ADD cümlesini kullanın. Bir sütun eklendiğinde, bu sütuna karşı tam metin sorgularının çalışabilmesi için tablodaki tam metin indeks yeniden doldurulmalıdır.
Uyarı
Bir sütun eklendikten sonra tam metin indeksin doldurulup doldurulmaması, değişim takibi etkinleştirilip etkinleştirilmediğine ve NÜFUSSUZ'UN BELIRTILMESINE BAĞLIDIR. Daha fazla bilgi için bkz. Değişim İzleme ve PİSİLTİ YOK Parametre Etkileşimleri.
TIP SÜTUNU type_column_name
Varbinary, varbinary(max) veya resim 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, .xls, vb.) içerir. Tip sütunu char, nchar, varchar veya nvarchar tipinde olmalıdır.
TYPE COLUMN type_column_name yalnızca column_namevarbinary, varbinary(max) veya görüntü sütunu belirtiyorsa, 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. language_term belirtilirse, temsil ettiği dil arama koşulunun tüm öğelerine uygulanır. Eğer herhangi bir değer belirtilmemişse, SQL Server örneğinin varsayılan tam metin dili kullanılır.
SQL Server örneğinin varsayılan tam metin diline dair bilgilere erişmek için sp_configure saklanan prosedürü kullanın.
Bir dizi olarak belirtildiğinde, language_term sistem tablosundaki aliassys.syslanguages 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. Altılık değer olarak belirtildiğinde, language_term 0x ve 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.
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ı kullanın. 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
için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
İ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) .
[ , ... n ]
ADD, ALTER veya DROP maddeleri için birden fazla sütunun belirtilebileceğini gösterir. Birden fazla sütun belirtildiğinde, bu sütunları virgülle ayırın.
NÜFUSSUZ
ADD veya DROP sütun işlemi veya SET STOPLIST işlemi sonrası tam metin indeksinin doldurulmayacağını belirtir. İndeks yalnızca kullanıcı bir START gerçekleştirirse doldurulur... NÜFUS komutası.
HİÇ NÜFUS belirtilmediğinde, SQL Server bir indeks doldurmaz. Dizin ancak kullanıcı ALTER FULL TEXT Index verdikten sonra doldurulur. NÜFUS komutunu başlat. HİÇ NÜFUS belirtilmediğinde, SQL Server indeksi doldurur.
Eğer CHANGE_TRACKING etkinleştirildiğinde ve HIÇ NÜFUS OLMADAN BELIRTILMEMIŞSE, SQL Server hata döndürür. Eğer CHANGE_TRACKING etkinse ve HİÇ NÜFUS belirtilmemişse, SQL Server indekste tam bir popülasyon gerçekleştirir.
Uyarı
Daha fazla bilgi için bkz. Değişim İzleme ve PİSİLTİ YOK Parametre Etkileşimleri.
{ADD | DROP } STATISTICAL_SEMANTICS
için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
Belirtilen sütunlar için istatistiksel anlamsal indekslemeyi etkinleştirir veya devre dışı bırakır. Daha fazla bilgi için bkz. semantik arama (SQL Server) .
BAŞLANGIÇ { FULL | KADEMELI | GÜNCELLEME } NÜFUS
SQL Server'a table_name'ın tam metin indeksinin popülasyonunu başlatmasını söyler. Tam metin indeks popülasyonu zaten devam ediyorsa, SQL Server uyarı gönderir ve yeni bir popülasyon başlatmaz.
DOLU
Tablodaki her satırın, satırlar zaten indekslenmiş olsa bile tam metin indeksleme için alındığını belirtir.
INCREMENTAL
Yalnızca son nüfustan itibaren değiştirilmiş satırların tam metin indeksleme için alındığını belirtir. INCREMENTAL yalnızca tabloda tip zaman damgasının bir sütunu varsa uygulanabilir. Tam metin katalogdaki bir tabloda zaman damgası tipinin sütunu bulunmuyorsa, tablo TAM bir popülasyondan geçer.
Güncelleme
Değişiklik takip indeksi son güncellendiğinden bu yana tüm eklemelerin, güncellemelerin veya silmelerin işlenmesini belirtir. Değişim takip popülasyonu bir tabloda etkinleştirilmelidir, ancak arka plan güncelleme indeksi veya otomatik değişiklik takibi açık olmamalıdır.
{DUR | DURAKLAMA | ÖZETLEME } NÜFUS
Devam eden herhangi bir nüfusu durdurur veya durdurur; ya da duraklayan nüfusu durdurur ya da yeniden başlatır.
POPÜLASYONU DURDURMAK, otomatik değişiklik takibi veya arka plan güncelleme indeksini durdurmaz. Değişiklik izlemeyi durdurmak için SET CHANGE_TRACKING OFF kullanın.
PİLALÜLÜĞİ DURDUR ve DEVAM NÜFUSU yalnızca tam nüfus için kullanılabilir. Diğer popülasyon türleri için geçerli değiller çünkü diğer popülasyonlar sürünmenin durduğu yerden sürünmeye devam ediyor.
SET STOPLIST { OFF | SISTEM | stoplist_name }
Eğer varsa, indeksle ilişkili tam metin durak listesini değiştirir.
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.
Daha fazla bilgi için bkz. Stopwords ve Stoplists yapılandırma ve yönetme için Full-Text Arama.
AYARLA ARAMA ÖZELLIK LISTESI { KAPALI | property_list_name } [ NÜFUS YOK ]
için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
Eğer varsa, indeksle ilişkili arama özellik listesini değiştirir.
OFF
Tam metin indeksle hiçbir özellik listesinin ilişkilendirilmediğini belirtir. Tam metin bir indeksin arama özellik listesini kapattığınızda (
ALTER FULLTEXT INDEX ... SET SEARCH PROPERTY LIST OFF), temel tabloda özellik araması artık mümkün değildir.Varsayılan olarak, mevcut bir arama özellik listesini kapattığınızda, tam metin dizin otomatik olarak yeniden doldurulur. Arama mülk listesini kapattığınızda NÜFUSSUZ belirtirseniz, otomatik yeniden nüfus oluşmaz. Ancak, sonunda bu tam metin indeksinde tam bir nüfusu istediğiniz zaman yayınlamanızı öneririz. Tam metin indeksin yeniden doldurulması, her bırakılan arama özelliğinin özel meta verilerini kaldırır, böylece tam metin indeksi daha küçük ve verimli hale gelir.
property_list_name
Tam metin indeksiyle ilişkilendirilecek arama özellik listesinin adını belirtir.
Tam metin bir indekse arama özellik listesi eklemek, ilgili arama özellik listesi için kayıtlı arama özelliklerini indekslemek için indeksin yeniden doldurulmasını gerektirir. Arama özellik listesini eklerken NÜFUSSUZ olarak belirtirseniz, uygun zamanda bir nüfusu indekste çalıştırmanız gerekir.
Önemli
Tam metin indeks daha önce farklı bir aramayla ilişkilendirilmişse, indeksin tutarlı bir duruma getirilmesi için yeniden oluşturulması gereken özellik listesi olmalıdır. İndeks hemen kesilir ve tam nüfus tamamlanana kadar boş kalır. Daha fazla bilgi için, Arama Mülk Listesini Değiştirmek İndeksin Yeniden Oluşturulmasına Neden Olur bkz.
Uyarı
Aynı veritabanında bir arama özelliği listesini, birden fazla tam metin indeksle ilişkilendirebilirsiniz.
Mevcut veritabanında arama özellik listelerini bulun
Mülk listeleri hakkında daha fazla bilgi için Arama Belge Mülkleri Arama Mülk Listeleri ile Arama bölümünü inceleyebilirsiniz.
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.
ALTER FULL TEXT INDEX kullanıcı işlemlerinin 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.
| Değişiklik izleme | NÜFUSSUZ | Result |
|---|---|---|
| Etkin değil | Belirtilmemiş | Tam bir popülasyon indeks üzerinde yapılır. |
| Etkin değil | 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.
Arama özellik listesini değiştirmek endeksi yeniden inşa etmenize neden olur
Tam metin bir indeks ilk kez arama özellik listesiyle ilişkilendirildiğinde, indeks özelliğe özgü arama terimleri olarak yeniden doldurulmalıdır. Mevcut endeks verileri kısaltılmadı.
Ancak, tam metin indeksi farklı bir özellik listesiyle ilişkilendirirseniz, indeks yeniden oluşturulur. Yeniden yapılandırma, tam metin indeksi hemen kısaltarak mevcut tüm verileri kaldırır ve indeks yeniden doldurulmalıdır. Nüfus ilerlerken, temel tablodaki tam metin sorgular yalnızca nüfus tarafından zaten indekslenmiş tablo satırlarında arama yapar. Yeniden doldurulan indeks verileri, yeni eklenen arama özellik listesinin kayıtlı özelliklerinden meta verileri içerir.
Yeniden inşa edilmesine neden olan senaryolar şunlardır:
Doğrudan farklı bir arama özellik listesine geçin (bu bölümün ilerleyen bölümlerinde "Senaryo A"ya bakınız).
Arama özellik listesini kapatın ve daha sonra indeks ile herhangi bir arama özellik listesiyle ilişkilendirilin (bu bölümün ilerleyen bölümlerinde "Senaryo B"ye bakınız).
Uyarı
Tam metin aramanın mülk listeleriyle nasıl çalıştığı hakkında daha fazla bilgi için, Arama Belge Özellikleri ile Mülk Listeleri Araması bölümüne bakınız. Tam popülasyonlar hakkında bilgi için Nüfus Full-Text Endeksleri'ne bakınız.
Senaryo A: Doğrudan farklı bir arama özellik listesine geçin
Tam metin bir indeks ve arama özellik listesi
spl_1oluşturulurtable_1:CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index WITH SEARCH PROPERTY LIST=spl_1, CHANGE_TRACKING OFF, NO POPULATION;Tam bir nüfus tam metin indeksinde çalıştırılır:
ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;Tam metin indeks daha sonra aşağıdaki ifadeyle farklı bir arama özellik listesine atanır,
spl_2,ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;Bu ifade tam bir nüfusa neden olur, varsayılan davranış. Ancak, bu popülasyon başlamadan önce, Full-Text Engine otomatik olarak indeksi kısaltır.
Senaryo B: Arama özellik listesini kapatın ve daha sonra indeks herhangi bir arama özellik listesiyle ilişkilendirilir
Tam metin bir indeks
table_1oluşturulur ve arama özelliği listesispl_1ile otomatik tam nüfus (varsayılan davranış):CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index WITH SEARCH PROPERTY LIST=spl_1;Arama özellik listesi aşağıdaki gibi kapalıdır:
ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;Tam metin dizin tekrar aynı arama özellik listesiyle ya da farklı bir arama özelliği listesiyle ilişkilendirilir.
Örneğin, aşağıdaki ifade tam metin indeksi orijinal arama özellik listesiyle yeniden ilişkilendirir:
spl_1ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;Bu ifade tam bir nüfusu başlatır, varsayılan davranış.
Uyarı
Yeniden yapı ayrıca farklı bir arama mülk listesi için de gereklidir, örneğin
spl_2.
Permissions
Kullanıcının tabloda veya indekslenmiş görünümde ALTER iznine sahip olmalı, ya da sysadmin sabit sunucu rolünün, db_ddladmin veya db_owner sabit veritabanı rollerinin bir üyesi olmalıdır.
SET DURDURMA Listesi belirtilmişse, kullanıcının stoplist'te REFERENCES iznine sahip olması gerekir. SET SEARCH PROPERTY LIST belirtilmişse, kullanıcının arama özellik listesinde REFERENCES iznine sahip olması gerekir. Belirtilen durak listesi veya arama mülk listesinin sahibi, sahip ALTER FULL TEXT CATALOG iznlerine sahipse REFERENCES izni verebilir.
Uyarı
Kamuya, SQL Server ile birlikte gönderilen varsayılan durdurma listesine REFERANS izni verilir.
Örnekler
A. Manuel değişim takibi ayarlanır
Aşağıdaki örnek, tablodaki JobCandidate tam metin indeksinde manuel değişim takibi oluşturur.
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
SET CHANGE_TRACKING MANUAL;
GO
B. Bir özellik listesini tam metin bir indeksle ilişkilendirin
için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
Aşağıdaki örnek, özellik listesini DocumentPropertyList tablodaki Production.Document tam metin indeksle ilişkilendirir. Bu ALTER FULL TEXT INDEX ifadesi, SET SEARCH PROPERTY LIST maddesinin varsayılan davranışı olan tam bir popülasyonu başlatır.
Uyarı
Özellik listesini DocumentPropertyList oluşturan bir örnek için bkz. ARAMA ÖZELLIK LISTESI OLUŞTUR (Transact-SQL) ).
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
SET SEARCH PROPERTY LIST DocumentPropertyList;
GO
C. Arama özelliği listesini kaldır
için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
Aşağıdaki örnek, tam metin indeksinden Production.Documentözellik DocumentPropertyList listesini kaldırır. Bu örnekte, özellikleri indeksten kaldırmak için acele yok, bu yüzden NÜFUSSUZ seçeneği belirtilmiş. Ancak, bu tam metin indeksinde özellik düzeyinde arama artık izin verilmektedir.
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
GO
D. Tam bir nüfus başlatın
Aşağıdaki örnek, JobCandidate tablodaki tam metin indeksinde tam bir nüfusu başlatır.
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
START FULL POPULATION;
GO