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
Bu makale, SQL Server Database Engine'de tam metin indekslerin nasıl oluşturulacağını, doldurulacağını ve yönetileceğini açıklar. Tam metin bir indeks, bir tablodaki karakter tabanlı sütunlar üzerinde anahtar kelime ve dilsel aramayı destekler.
Tam metin kataloğu oluşturma
Tam metin bir indeks oluşturabilmek için tam metin kataloğa ihtiyacınız var. Katalog, bir veya daha fazla tam metin dizini için sanal bir kapsayıcıdır. Daha fazla bilgi için, Full-Text Katalogları Oluştur ve Yönet'e bakabilirsiniz.
Tam metin dizini oluşturma, değiştirme veya bırakma
Tam metin dizinini doldurma
Tam metin dizini oluşturma ve sürdürme işlemi, popülasyon (gezinmeolarak da bilinir) olarak adlandırılır. Üç tür tam metin dizini popülasyonu vardır:
- Tam nüfus
- Değişiklik izlemeye dayalı nüfus
- Zaman damgasına dayalı artan nüfus
Daha fazla bilgi için bkz. Full-Text Dizinlerini Doldurma.
Tam metin dizininin özelliklerini görüntüleme
Transact-SQL ile tam metin dizininin özelliklerini görüntüleme
| Katalog veya Dinamik Yönetim Görünümü | Açıklama |
|---|---|
| sys.fulltext_index_catalog_usages | Her bir tam metin kataloğuna ilişkin olarak tam metin dizin başvurusu için bir satır döndürür. |
| sys.fulltext_index_columns | Tam metin dizininin parçası olan her sütun için bir satır içerir. |
| sys.fulltext_index_fragments | Tam metin bir indeks, ters çevrilmiş indeks verilerini depolamak için tam metin indeks parçaları adı verilen dahili tablolar kullanır. Bu görünümü kullanarak bu parçalarla ilgili meta verileri sorgulayabilirsiniz. Bu görünüm, tam metin dizini içeren her tablodaki her tam metin dizini parçası için bir satır içerir. |
| sys.fulltext_indexes | Tablosal bir nesnenin tam metin dizini başına bir satır içerir. |
| sys.dm_fts_index_keywords | Belirtilen tablo için tam metin dizininin içeriği hakkında bilgi döndürür. |
| sys.dm_fts_index_keywords_by_document | Belirtilen tablo için tam metin dizininin belge düzeyi içeriği hakkında bilgi döndürür. Belirli bir anahtar sözcük çeşitli belgelerde görünebilir. |
| sys.dm_fts_index_population | Şu anda sürmekte olan tam metin dizini oluşumları hakkında bilgi verir. |
SQL Server Management Studio ile tam metin dizininin özelliklerini görüntüleme
Not
Azure SQL veritabanlarının tam metin dizinlerinin özelliklerini görüntülemek için Transact-SQLkullanın.
SQL Server Management Studio'da, Nesne Gezgini'nde sunucuyu genişletin.
Veritabanları'nı genişletin ve ardından tam metin dizinini içeren veritabanını genişletin.
tabloyugeniş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 seçin. Bu işlem, Tam metin indeks Özellikler diyalog kutusunu açar.
Bir sayfa seç panelinde, aşağıdaki sayfalardan herhangi birini seçin:
Sayfa Açıklama Genel Tam metin dizininin temel özelliklerini görüntüler. Bu özellikler, veritabanı adı, tablo adı ve tam metin anahtar sütununun adı gibi birkaç değiştirilebilir özellik ve birçok değiştirilemez özelliği içerir. Değiştirilebilir özellikler şunlardır:
Full-Text Dizin Durdurma Listesi
Full-Text dizin oluşturma etkin
Değişiklik İzleme
Arama Özellikleri ListesiSütunları Tam metin dizin oluşturma için kullanılabilen tablo sütunlarını görüntüler. Seçili sütun veya sütunlar tam metin dizinine alınmıştır. Tam metin dizinine eklemek istediğiniz kadar kullanılabilir sütun seçebilirsiniz. Daha fazla bilgi için bkz. Full-Text Dizinlerini Doldurma. Zamanlamaları Bu sayfayı, tam metin dizini popülasyonları için artımlı tablo popülasyonu başlatan bir SQL Server Aracısı işinin zamanlamalarını oluşturmak veya yönetmek için kullanın. Daha fazla bilgi için bkz. Full-Text Dizinlerini Doldurma.
Not: Full-Text Index Properties iletişim kutusundan çıktıktan sonra, yeni oluşturulan herhangi bir zamanlama bir SQL Server Agent işiyle ilişkilendirilir (database_name.table_name üzerinde Artımlı Tablo Doldurmayı Başlat).Tamam öğesini seçerek yaptığınız değişiklikleri kaydedin ve Tam Metin Dizini Özellikleri iletişim kutusundan çıkın.
Dizine alınan tabloların ve sütunların özelliklerini görüntüleme
Çeşitli tam metin indeksleme özelliklerinin değerini almak için , gibi birkaç Transact-SQL fonksiyonu OBJECTPROPERTYEXkullanabilirsiniz. Bu bilgiler, tam metin aramasını yönetmek ve sorunlarını gidermek için kullanışlıdır.
Aşağıdaki tabloda, dizine alınan tablo ve sütunlarla ilgili tam metin özellikleri ve bunların ilgili Transact-SQL işlevleri listelenmektedir.
| Mülk | Açıklama | Fonksiyon |
|---|---|---|
| Tam Metin Türü Sütunu |
TYPE COLUMN sütunun belge tipi bilgilerini içeren tabloda. |
SÜTUNÖZELLİĞİ |
| IsFulltextIndexed | Bir sütunun tam metin indeksleme için etkin olup olmadığını belirtir. | COLUMNPROPERTY |
| TamMetinAnahtarı mı | Dizinin bir tablonun tam metin anahtarı olup olmadığı. | INDEXPROPERTY (.Özellik) |
| TableFulltextBackgroundUpdateIndexOn | Tablonun tam metin arka plan güncelleştirme dizinine sahip olup olmadığını. | OBJECTPROPERTYEX |
| TableFulltextCatalogId | Tablonun tam metin dizin verilerinin bulunduğu tam metin katalog kimliği. | OBJECTPROPERTYEX |
| TableFulltextChangeTrackingOn | Bir tablonun tam metin değişiklik izleme özelliğinin etkinleştirilip etkinleştirilmediği. | OBJECTPROPERTYEX |
| TableFulltextDocsProcessed | Tam metin dizini oluşturmanın başlangıcından bu yana işlenen satır sayısı. | OBJECTPROPERTYEX |
| TableFulltextFailCount | Dizine eklenmeyen satır sayısı Full-Text. | OBJECTPROPERTYEX |
| TableFulltextItemCount | Başarıyla tam metin indekslemesi gerçekleştirilmiş satır sayısı. | OBJECTPROPERTYEX |
| TableFulltextKeyColumn | Tam metin benzersiz anahtar sütununun sütun kimliği. | OBJECTPROPERTYEX |
| TabloTamMetinBirleştirmeDurumu | Tam metin dizini olan bir tablonun şu anda birleştirmede olup olmadığı. | OBJECTPROPERTYEX |
| TabloTümMetinBekleyenDeğişiklikler | İşlenmek üzere bekleyen değişiklik izleme girdilerinin sayısı. | OBJECTPROPERTYEX |
| TableFulltextPopulateStatus | Tam metin tablosunun popülasyon durumu. | OBJECTPROPERTYEX |
| TableHasActiveFulltextIndex | Tablonun etkin bir tam metin dizinine sahip olup olmadığı. | OBJECTPROPERTYEX |
Tam metin anahtar sütunu hakkında bilgi alma
Genellikle, CONTAINSTABLE veya FREETEXTTABLE satır kümesi değerli işlevlerinin sonucunu temel tabloyla birleştirirsiniz. Böyle durumlarda benzersiz anahtar sütun adını bilmeniz gerekir. Belirli bir benzersiz indeksin tam metin anahtarı olarak kullanılıp kullanılmadığını kontrol edebilir ve tam metin anahtar sütununun tanımlayıcısını alabilirsiniz.
Belirli bir benzersiz dizinin tam metin anahtar sütunu olarak kullanılıp kullanılmadığını belirleme
INDEXPROPERTY işlevini çağırmak için SELECT deyimi kullanın. Fonksiyon çağrısında, tablonun adını (OBJECT_ID) tablo kimliğine dönüştürmek için fonksiyonu kullanın, tablo için benzersiz bir indeksin adını belirtin ve IsFulltextKey indeks özelliğini aşağıdaki gibi belirtin:
SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey');
Bu ifade, dizin tam metin anahtar sütunu için benzersizliği zorluyorsa 1, zorlamıyorsa 0 döndürür.
Örnek
Aşağıdaki örnek, indeksin PK_Document_DocumentNode tam metin anahtar sütunu için benzersizliği zorunlu kılıp sağlamadığını kontrol eder:
USE AdventureWorks2025;
GO
SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode', 'IsFulltextKey');
Bu örnek, PK_Document_DocumentNode dizin tam metin anahtar sütunu için benzersizliği zorluyorsa 1 döndürür. Aksi takdirde, 0 veya NULL döndürür.
NULL Geçersiz bir indeks adı kullandığınız, indeks adının tabloya uymadığı, tablonun olmadığı ve benzeri bir şey demektir.
Tam metin anahtar sütununun tanımlayıcısını bulma
Her tam metin etkinleştirilmiş tabloda, tablo için benzersiz satırlar ( benzersiz anahtar sütun) zorunlu kılan bir sütun bulunur.
OBJECTPROPERTYEX işlevinden elde edilen TableFulltextKeyColumn özelliği, benzersiz anahtar sütununun sütun kimliğini içerir.
Bu tanımlayıcıyı almak için, fonksiyonu SELECT çağıran bir OBJECTPROPERTYEX ifade kullanın. Tablo adını (OBJECT_ID) tablo kimliğine dönüştürmek ve özelliği aşağıdaki gibi belirtmek için fonksiyonu kullanınTableFulltextKeyColumn:
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn') AS 'Column Identifier';
Örnekler
Aşağıdaki örnek, tam metin anahtar sütununun veya NULL'nin tanımlayıcısını döndürür.
NULL geçersiz bir indeks adı kullandığınızı, indeks adının tabloya uymadığını, tablonun var olmadığını vs. ima eder.
USE AdventureWorks2025;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
Aşağıdaki örnek, sütunun adını almak için benzersiz anahtar sütununun tanımlayıcısının nasıl kullanılacağını gösterir.
USE AdventureWorks2025;
GO
DECLARE @key_column AS SYSNAME;
SET @key_column = COL_NAME(
OBJECT_ID('Production.Document'),
OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn')
);
SELECT @key_column AS 'Unique Key Column';
GO
Bu örnek, Document tablosunun benzersiz anahtar sütunu DocumentNode'un adını içeren tek bir satır görüntüleyen Unique Key Columnadlı bir sonuç kümesi sütunu döndürür. Eğer bu sorgu geçersiz bir indeks adı içeriyorsa, indeks adı tabloya uymuyorsa, tablo yoksa ve benzeri şekilde NULLdöndürür.
varbinary(max) ve XML sütunlarının dizinlenmesi
Bir varbinary(max), varbinary veya xml sütununu tam metin indeksle indekslerseniz, diğer tam metin indeksli sütunlar gibi tam metin önlemleri (CONTAINS ve FREETEXT) ve fonksiyonları (CONTAINSTABLE ve FREETEXTTABLE) kullanarak sorgulayabilirsiniz.
Dizin varbinary(max) veya varbinary verileri
Tek bir varbinary(max) veya varbinary sütunu birçok belge türünü depolayabilir. Database Engine, işletim sisteminde filtre kurulmuş ve mevcut olan herhangi bir belge tipini destekler. Her belgenin belge türü, belgenin dosya uzantısı tarafından tanımlanır. Örneğin, bir .doc dosya uzantısı için tam metin arama, Microsoft Word belgelerini destekleyen filtreyi kullanır. Kullanılabilir belge türlerinin listesi için sys.fulltext_document_types katalog görünümünü sorgula.
Full-Text Altyapısı, işletim sisteminde yüklü olan mevcut filtreleri kullanabilir. İşletim sistemi filtrelerini, sözcük ayırıcılarını ve kök sözcük ayırıcılarını kullanabilmek için bunları sunucu örneğine aşağıdaki gibi yüklemeniz gerekir:
EXECUTE sp_fulltext_service
@action = 'load_os_resources',
@value = 1;
varbinary(max) sütununda tam metin dizini oluşturmak için, Full-Text Altyapısı'nın varbinary(max) sütunundaki belgelerin dosya uzantılarına erişmesi gerekir. Bu bilgiyi, tam metin indeksindeki varbinary(max) sütunuyla ilişkilendirdiğiniz bir tablo sütununda, yani tip sütununda saklamalısınız. Full-Text Altyapısı, bir belgenin dizinini oluştururken hangi filtrenin kullanılacağını belirlemek için tür sütunundaki dosya uzantısını kullanır.
XML verilerini dizine oluşturma
xml veri türü sütunu yalnızca XML belgelerini ve parçalarını depolar ve belgeler için yalnızca XML filtresi kullanılır. Bu nedenle, bir tür sütunu gereksizdir. xml sütunlarında, tam metin dizini XML öğelerinin içeriğini dizine alır, ancak XML işaretlemesini yoksayar. Öznitelik değerleri, sayısal değerler olmadığı sürece tam metin dizinleme uygulanır. Öğe etiketleri belirteç sınırları olarak kullanılır. İyi biçimlendirilmiş XML veya HTML belgeleri ve birden çok dil içeren parçalar desteklenir.
Bir xml sütununda indeksleme ve sorgulama hakkında daha fazla bilgi için bkz. Tam metin arama ile XML sütunları kullanın.
Tablo için tam metin dizini oluşturmayı devre dışı bırakma veya yeniden etkinleştirme
Database Engine'de, kullanıcı tarafından oluşturulan tüm veritabanları varsayılan olarak tam metin olarak etkinleştirilmiştir. Ayrıca, tek bir tablo üzerinde tam metin dizini oluşturulduğunda ve dizine bir sütun eklendiğinde tam metin dizini için otomatik olarak etkinleştirilir. Son sütun tam metin dizininden çıkarıldığında, tablo tam metin dizini için otomatik olarak devre dışı bırakılır.
Tam metin indeksli bir masada, SQL Server Management Studio kullanarak tam metin indeksleme için bir tabloyu manuel olarak devre dışı bırakabilir veya yeniden etkinleştirebilirsiniz.
Sunucu grubunu genişletin, Veritabanlarıgenişletin ve tam metin dizinleme için etkinleştirmek istediğiniz tabloyu içeren veritabanını genişletin.
Tablolargenişletin ve tam metin dizini oluşturma işlemi için devre dışı bırakmak veya yeniden etkinleştirmek istediğiniz tabloya sağ tıklayın.
Full-Text dizini seçin ve ardından Full-Text dizini devre dışı bırak veya Full-Text dizini etkinleştir seçeneğini seçin.
Tablodan tam metin dizini kaldırma
Nesne Gezgini'nde, silmek istediğiniz tam metin dizinine sahip tabloya sağ tıklayın.
seç'i, Full-Text dizinini sil.
İstendiğinde, Tamam'ı seçerek tam metin dizinini silmek istediğinizi onaylayın.
İlgili içerik
- arama Full-Text
- Tam Metin Arama ve Anlamsal Arama saklı yordamları (Transact-SQL)
- Full-Text Katalog oluşturma ve yönetme