İngilizce dilinde oku

Aracılığıyla paylaş


Full-Text Dizinlerini Doldur

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Tam metin dizini oluşturma ve sürdürme, popülasyon (gezinmeolarak da bilinir) adlı bir işlem kullanarak dizini doldurmayı içerir.

Popülasyon türleri

Tam metin dizini aşağıdaki popülasyon türlerini destekler:

  • tam popülasyon
  • değişiklik izleme dayalı otomatik veya el ile popülasyon
  • zaman damgasına dayalı kümülatif nüfus artışı

Tam nüfus

Tam popülasyon sırasında, bir tablonun veya dizine alınan görünümün tüm satırları için dizin girdileri oluşturulur. Tam metin dizininin tam popülasyonu, temel tablonun veya dizine alınan görünümün tüm satırları için dizin girdileri oluşturur.

Varsayılan olarak, SQL Server, yeni bir tam metin dizini oluşturulduğunda hemen tamamen doldurur.

  • Bir yandan, tam bir popülasyon önemli miktarda kaynak tüketebilir. Bu nedenle, yoğun dönemlerde tam metin dizini oluştururken, özellikle tam metin dizininin temel tablosu büyükse, tam popülasyonu yoğun olmayan bir zamana kadar geciktirmek genellikle en iyi yöntemdir.
  • Öte yandan, dizinin ait olduğu tam metin kataloğu, tüm tam metin dizinleri doldurulana kadar kullanılamaz.

Tam metin dizinini hemen doldurmadan oluşturmak için CREATE FULLTEXT INDEX deyiminde CHANGE_TRACKING OFF, NO POPULATION yan tümcesini belirtin. CHANGE_TRACKING MANUAL'i belirtmeniz halinde, START FULL POPULATION veya START INCREMENTAL POPULATION yan tümcesini kullanarak bir ALTER FULLTEXT INDEX deyimi yürütmedikçe Full-Text Motoru yeni tam metin dizinini doldurmaz.

Örnek - Tam popülasyon çalıştırmadan tam metin dizini oluşturma

Aşağıdaki örnek, AdventureWorks örnek veritabanının Production.Document tablosunda bir tam metin dizini oluşturur. Bu örnek, ilk tam popülasyonu geciktirmek için WITH CHANGE_TRACKING OFF, NO POPULATION kullanır.

SQL
CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);  
CREATE FULLTEXT CATALOG AW_Production_FTCat;  
CREATE FULLTEXT INDEX ON Production.Document  
(  
    Document                         --Full-text index column name   
        TYPE COLUMN FileExtension    --Name of column that contains file type information  
        Language 1033                 --1033 is LCID for the English language  
)  
    KEY INDEX ui_ukDoc  
    ON AW_Production_FTCat  
    WITH CHANGE_TRACKING OFF, NO POPULATION;  
GO  
  

Örnek - Tabloda tam popülasyon çalıştırma

Aşağıdaki örnek, AdventureWorks örnek veritabanının Production.Document tablosunda tam bir popülasyon çalıştırır.

SQL
ALTER FULLTEXT INDEX ON Production.Document  
   START FULL POPULATION;  

Değişiklik izlemeye dayalı nüfus

İsteğe bağlı olarak, ilk tam popülasyondan sonra tam metin dizinini korumak için değişiklik izlemeyi kullanabilirsiniz. SQL Server, son popülasyondan bu yana temel tabloda yapılan değişiklikleri izlediği bir tablo koruduğundan, değişiklik izlemeyle ilgili küçük bir ek yük vardır. Değişiklik izlemeyi kullandığınızda, SQL Server temel tablodaki veya dizine alınmış görünümdeki güncelleştirmeler, silmeler veya eklemeler tarafından değiştirilmiş satırların kaydını tutar. WRITETEXT ve UPDATETEXT aracılığıyla yapılan veri değişiklikleri tam metin dizinine yansıtılmaz ve değişiklik izleme ile alınmaz.

Not

zaman damgası sütunu içeren tablolar için değişiklik izleme yerine artımlı popülasyon kullanabilirsiniz.

Dizin oluşturma sırasında değişiklik izlemeyi etkinleştirdiğinizde, SQL Server yeni tam metin dizinini oluşturulduktan hemen sonra tamamen doldurur. Bundan sonra değişiklikler izlenir ve tam metin dizinine yayılır.

Değişiklik izlemeyi etkinleştirme

İki tür değişiklik izleme vardır:

  • Otomatik (CHANGE_TRACKING AUTO seçeneği). Otomatik değişiklik izleme varsayılan davranıştır.
  • El ile (CHANGE_TRACKING MANUAL seçeneği).

Değişiklik izleme türü, tam metin dizininin nasıl dolduruldığını aşağıdaki gibi belirler:

  • Otomatik popülasyon

    Varsayılan olarak veya CHANGE_TRACKING AUTObelirtirseniz, Full-Text Altyapısı tam metin dizininde otomatik popülasyon kullanır. İlk tam popülasyon tamamlandıktan sonra, temel tabloda veriler değiştirildiğinde değişiklikler izlenir ve izlenen değişiklikler otomatik olarak yayılır. Ancak, tam metin dizini arka planda güncelleştirilir, bu nedenle yayılan değişiklikler dizine hemen yansıtılamayabilir.

    Otomatik popülasyon değişiklikleri izlemeye başlamak için

    Örnek - Otomatik değişiklik izleme kullanmak için tam metin dizinini değiştirme
    Aşağıdaki örnek, AdventureWorks örnek veritabanının HumanResources.JobCandidate tablosunun tam metin dizinini, değişiklik izlemeyi otomatik popülasyonla kullanacak şekilde değiştirir.

    SQL
    USE AdventureWorks;  
    GO  
    ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO;  
    GO   
    
  • El ile nüfus

    CHANGE_TRACKING MANUEL olarak belirttiğinizde, Full-Text Altyapısı tam metin dizininde manuel doldurma kullanır. İlk tam popülasyon tamamlandıktan sonra, temel tabloda veriler değiştirildiğinde değişiklikler izlenir. Ancak, bir ALTER FULLTEXT INDEX ... START UPDATE POPULATION deyimi yürütmeden, tam metin dizinine yayılmaz. BU Transact-SQL deyimini düzenli aralıklarla çağırmak için SQL Server Agent'ı kullanabilirsiniz.

    El ile nüfus değişiklikleri izlemeye başlamak için

    Örnek - El ile değişiklik izleme ile tam metin dizini oluşturma
    Aşağıdaki örnek, AdventureWorks örnek veritabanının HumanResources.JobCandidate tablosunda el ile popülasyon ile değişiklik izlemeyi kullanacak bir tam metin dizini oluşturur.

    SQL
    USE AdventureWorks;  
    GO  
    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 CHANGE_TRACKING=MANUAL;  
    GO  
    

    Örneği - El ile popülasyon çalıştırma
    Aşağıdaki örnek, AdventureWorks örnek veritabanının HumanResources.JobCandidate tablosunun değişiklik izlenen tam metin dizininde el ile bir popülasyon çalıştırır.

    SQL
    USE AdventureWorks;  
    GO  
    ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION;  
    GO  
    

Değişiklik izlemeyi devre dışı bırakma

Zaman damgasına dayalı artan nüfus

Artımlı popülasyon, tam metin dizinini el ile doldurmaya yönelik alternatif bir mekanizmadır. Bir tabloda yüksek hacimli eklemeler yaşanıyorsa, artımlı doldurma kullanmak, manuel doldurmaya göre daha verimli olabilir.

CHANGE_TRACKING MANUAL veya OFF olarak ayarlanmış bir tam metin dizini için artımlı bir popülasyon çalıştırabilirsiniz.

Artımlı popülasyon gereksinimi, dizine alınan tablonun zaman damgası veri türünde bir sütuna sahip olması gerektiğidir. zaman damgası sütunu yoksa artımlı popülasyon gerçekleştirilemez.

SQL Server, son popülasyondan bu yana değişen satırları tanımlamak için zaman damgası sütununu kullanır. Artımlı popülasyon, son popülasyondan sonra veya son popülasyon devam ederken eklenen, silinen veya değiştirilen satırlar için tam metin dizinini güncelleştirir. Popülasyonun sonunda, Full-Text Motoru yeni bir zaman etiketi değeri kaydeder. Bu değer, SQL Toplayıcısı'nın bulduğu en büyük zaman damgası değeridir. Bu değer, sonraki artımlı popülasyon başladığında kullanılır.

Bazı durumlarda, artımlı popülasyon isteği tam popülasyona neden olur.

  • zaman damgası sütunu olmayan bir tablodaki artımlı popülasyon isteği, tam popülasyon işlemine neden olur.
  • Tam metin dizinindeki ilk popülasyon artımlı bir popülasyonsa, tüm satırları dizine alır ve tam popülasyona eşdeğer hale getirir.
  • Tablonun tam metin dizinini etkileyen meta veriler son popülasyondan sonra değiştiyse, artımlı popülasyon istekleri tam popülasyon olarak uygulanır. Bu, sütun, dizin veya tam metin dizin tanımlarının değiştirilmesinin neden olduğu meta veri değişikliklerini içerir.

Artımlı popülasyonu çalıştırın

Artımlı bir popülasyon başlatmak için START INCREMENTAL POPULATION klozunu kullanarak bir ALTER FULLTEXT INDEX deyimi çalıştırın.

Artımlı popülasyon için zamanlama oluşturma veya değiştirme

  1. Management Studio'daki Nesne Gezgini'nde sunucuyu genişletin.

  2. Veritabanlarıgenişletin ve ardından tam metin dizinini içeren veritabanını genişletin.

  3. tablolarıgenişletin.

    Tam metin dizininin tanımlandığı tabloya sağ tıklayın, Full-Text dizini seçin ve Full-Text dizin bağlam menüsünde özellikler tıklayın. Bu, Tam metin dizini Özellikleri iletişim kutusunu açar.

    Önemli

    Temel tablo veya görünüm zaman damgası veri türünde bir sütun içermiyorsa artımlı popülasyon mümkün değildir.

  4. Sayfa seç bölmesinde, Takvimlerseçin.

    Temel tabloda veya tam metin dizininin dizinli görünümünde artımlı tablo popülasyonu başlatan bir SQL Server Aracısı işinin zamanlamalarını oluşturmak veya yönetmek için bu sayfayı kullanın.

    Seçenekler şunlardır:

    • Yeni bir zamanlama oluşturmak için Yeni öğesine tıklayın.

      Bu, bir zamanlama oluşturabileceğiniz Yeni Endeksleme Tablosu Zamanlaması Full-Text iletişim kutusunu açar. Zamanlamayı kaydetmek için Tamamöğesine tıklayın.

      Önemli

      bir SQL Server Aracısı işi (database_nameüzerinde Artımlı Tablo Popülasyonunu Başlat .table_name), Full-Text Dizin Özellikleri iletişim kutusundan çıktıktan sonra yeni bir zamanlamayla ilişkilendirilir. Aynı tam metin dizini için birden çok zamanlama oluşturursanız, hepsi aynı işi kullanır.

    • Var olan bir zamanlamayı değiştirmek için, var olan zamanlamayı seçin ve Düzenleöğesine tıklayın.

      Bu, Yeni Full-Text İndeksleme Tablo Zamanlaması iletişim kutusunu açar; burada zamanlamayı değiştirebilirsiniz.

      Not

      SQL Server Agent işini değiştirme hakkında bilgi için bkz. İşi Değiştirme.

    • Var olan bir zamanlamayı kaldırmak için, var olan zamanlamayı seçin ve Silöğesine tıklayın.

  5. Tamamseçin.

Tam metin popülasyonundaki hataları giderme (gezinme)

Gezinme sırasında bir hata oluştuğunda, Full-Text Arama gezinme günlüğü özelliği düz metin dosyası olan bir gezinme günlüğü oluşturur ve korur. Her gezinme günlüğü belirli bir tam metin kataloğuna karşılık gelir. Varsayılan olarak, belirli bir örneğin gezinme günlükleri (bu örnekte varsayılan örnek) %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG klasörde bulunur.

Gezinme günlüğü dosyası aşağıdaki adlandırma düzenini izler:

SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]

Gezinme günlüğü dosya adının değişken bölümleri şunlardır.

  • < DatabaseID> - Veritabanının kimliği. < dbid>, başında sıfır bulunan beş basamaklı bir sayıdır.
  • < FullTextCatalogID> - Tam metin katalog kimliği. < catid>, başında sıfır bulunan beş basamaklı bir sayıdır.
  • < n> - Aynı tam metin kataloğunun bir veya daha fazla gezinme günlüğünün var olduğunu gösteren bir tamsayıdır.

Örneğin, SQLFT0000500008.2 veritabanı kimliği = 5 ve tam metin katalog kimliği = 8 olan bir veritabanının gezinme günlüğü dosyasıdır. Dosya adının sonundaki 2, bu veritabanı/katalog çifti için iki gezinme günlüğü dosyası olduğunu gösterir.

Ayrıca Bkz.

sys.dm_fts_index_population (Transact-SQL)
Full-Text Arama Kullanmaya Başlama
Full-Text Dizin oluşturma ve yönetme
TAM METİN DİZİN OLUŞTUR (Transact-SQL)
TAM METİN DİZİNİNİ DEĞİŞTİR (Transact-SQL)