Tablo ve sütunlarda anlamsal aramayı etkinleştirme

Şunlar için geçerlidir: SQL Server

Belge veya metin içeren seçili sütunlarda istatistiksel semantik dizin oluşturmayı etkinleştirmeyi veya devre dışı bırakmayı açıklar.

İstatistiksel anlamsal arama, Full-Text Search tarafından oluşturulan dizinleri kullanır ve ek dizinler oluşturur. Tam metin arama bağımlılığının bir sonucu olarak, yeni bir tam metin dizini tanımlarken veya var olan bir tam metin dizinini değiştirirken yeni bir anlam dizini oluşturursunuz. bu makalede açıklandığı gibi, Transact-SQL deyimlerini kullanarak veya SQL Server Management Studio'daki Full-Text Dizin Oluşturma Sihirbazı'nı ve diğer iletişim kutularını kullanarak yeni bir anlam dizini oluşturabilirsiniz.

Anlamsal dizin oluşturma

Semantik dizin oluşturma gereksinimleri ve kısıtlamaları

  • Tablolar ve dizinlenmiş görünümler de dahil olmak üzere tam metin dizin oluşturma için desteklenen veritabanı nesnelerinden herhangi birinde dizin oluşturabilirsiniz.

  • Belirli sütunlar için anlamsal dizin oluşturmayı etkinleştirebilmeniz için önce aşağıdaki önkoşulların mevcut olması gerekir:

    • Veritabanı için bir tam metin kataloğu bulunmalıdır.

    • Tabloda tam metin dizini olmalıdır.

    • Seçili sütunların tam metin dizinine katılması gerekir.

    Tüm bu gereksinimleri aynı anda oluşturabilir ve etkinleştirebilirsiniz.

  • Tam metin dizini oluşturma için desteklenen veri türlerinden herhangi birine sahip sütunlarda anlamsal dizin oluşturabilirsiniz. Daha fazla bilgi için bkz. Full-Text Dizinleri Oluşturma ve Yönetme.

  • Varbinary(max) sütunları için tam metin dizinleme için desteklenen herhangi bir belge türünü belirtebilirsiniz. Daha fazla bilgi için, bu makaledeki Nasıl Yapılır: Hangi Belge Türlerinin Dizine Alınabileceğini Belirleme konusuna bakın.

  • Anlamsal dizin oluşturma, seçtiğiniz sütunlar için iki tür dizin oluşturur: anahtar ifadelerin dizini ve belge benzerliği dizini. Anlamsal dizin oluşturmayı etkinleştirdiğinizde yalnızca bir dizin türünü veya diğerini seçemezsiniz. Ancak bu iki dizini bağımsız olarak sorgulayabilirsiniz. Daha fazla bilgi için bkz. AnlamSal Arama ile Belgelerde Anahtar İfadeleri Bulma ve AnlamSal Aramaile Benzer ve İlgili Belgeleri Bulma.

  • Semantik dizin için açıkça bir LCID belirtmezseniz, semantik dizin oluşturma için yalnızca birincil dil ve ilişkili dil istatistikleri kullanılır.

  • Dil modelinin kullanılamadığı bir sütun için bir dil belirtirseniz, dizinin oluşturulması başarısız olur ve bir hata iletisi döndürür.

Tam metin dizini olmadığında anlam dizini oluşturma

deyimiyle yeni bir tam metin dizini oluşturduğunuzda, sütun tanımının CREATE FULLTEXT INDEX bir parçası olarak anahtar sözcüğünü STATISTICAL_SEMANTICS belirterek sütun düzeyinde anlamsal dizin oluşturmayı etkinleştirebilirsiniz. Yeni bir tam metin dizini oluşturmak için Full-Text Dizin Oluşturma Sihirbazı'nı kullandığınızda da anlamsal dizin oluşturmayı etkinleştirebilirsiniz.

Transact-SQL kullanarak yeni bir anlam dizini oluşturma

CREATE FULLTEXT INDEX deyimini çağırın ve her sütun için semantik dizin oluşturmak amacıyla STATISTICAL_SEMANTICS belirtin. Bu deyimin tüm seçenekleri hakkında daha fazla bilgi için bkz CREATE FULLTEXT INDEX . (Transact-SQL).

Örnek 1: Benzersiz dizin, tam metin dizini ve anlam dizini oluşturma

Aşağıdaki örnek, varsayılan bir tam metin kataloğu ftoluşturur. Örnek daha sonra örnek veritabanının tablosunun JobCandidateIDHumanResources.JobCandidateAdventureWorks2025 sütununda benzersiz bir dizin oluşturur. Bu benzersiz dizin, tam metin dizini için anahtar sütun olarak gereklidir. Örnek daha sonra sütunda Resume tam metin dizini ve anlam dizini oluşturur.

CREATE FULLTEXT CATALOG ft AS DEFAULT
GO

CREATE UNIQUE INDEX ui_ukJobCand
    ON HumanResources.JobCandidate(JobCandidateID)
GO

CREATE FULLTEXT INDEX ON HumanResources.JobCandidate
    (Resume
        Language 1033
        Statistical_Semantics
    )
    KEY INDEX JobCandidateID
    WITH STOPLIST = SYSTEM
GO

Örnek 2: Gecikmeli dizin popülasyonu olan birkaç sütunda tam metin ve semantik dizin oluşturma

Aşağıdaki örnek, documents_catalogAdventureWorks2025 ö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 dizini tablonun , Titleve DocumentSummary sütunlarında DocumentProduction.Document oluşturulurken, anlam dizini yalnızca sütunda Document oluşturulur. Bu tam metin dizini, yeni oluşturulan tam metin kataloğunu ve mevcut benzersiz anahtar dizinini PK_Document_DocumentIDkullanır. Önerilen şekilde, bu dizin anahtarı bir tamsayı sütununda oluşturulur. DocumentID Örnek, sütunlardaki verilerin dili olan İngilizce 1033 için LCID'yi belirtir.

Bu örnek, değişiklik izlemenin popülasyon olmadan kapalı olduğunu da belirtir. Daha sonra yoğun olmayan saatlerde örnek, yeni dizinde tam bir popülasyon başlatmak ve otomatik değişiklik izlemeyi etkinleştirmek için bir ALTER FULLTEXT INDEX deyim kullanır.

CREATE FULLTEXT CATALOG documents_catalog
GO

CREATE FULLTEXT INDEX ON Production.Document
    (
    Title
        Language 1033,
    DocumentSummary
        Language 1033,
    Document
        TYPE COLUMN FileExtension
        Language 1033
        Statistical_Semantics
    )
    KEY INDEX PK_Document_DocumentID
        ON documents_catalog
        WITH 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

SQL Server Management Studio kullanarak yeni bir anlam dizini oluşturma

Full-Text Dizin Oluşturma Sihirbazı'nı çalıştırın ve semantik dizin oluşturmak istediğiniz her sütun için Tablo Sütunlarını Seç sayfasında İstatistiksel Semantiği etkinleştirin. Full-Text Dizin Oluşturma Sihirbazı'nı başlatma hakkında bilgiler de dahil olmak üzere daha fazla bilgi için bkz. Full-Text Dizin Oluşturma Sihirbazı'nı kullanma.

Mevcut bir tam metin dizini olduğunda anlam dizini oluşturma

Var olan bir tam metin dizinini ALTER FULLTEXT INDEX deyimiyle değiştirdiğinizde anlamsal dizin ekleyebilirsiniz. SQL Server Management Studio'daki çeşitli iletişim kutularını kullanarak anlamsal dizin oluşturma da ekleyebilirsiniz.

Transact-SQL kullanarak anlam dizini ekleme

Her sütun için, anlam dizini eklemek istediğiniz ALTER FULLTEXT INDEX deyimini, aşağıdaki bölümde açıklanan seçeneklerle çağırın. Bu deyimin tüm seçenekleri hakkında daha fazla bilgi için bkz ALTER FULLTEXT INDEX . (Transact-SQL).

Tam metin ve semantik dizinler, aksini belirtmediğiniz sürece ALTER çağrıdan sonra yeniden doldurulur.

  • Yalnızca bir sütuna tam metin dizini eklemek için ADD söz dizimini kullanın.

  • Bir sütuna hem tam metin hem de anlamsal dizin eklemek için, ADD yapısını STATISTICAL_SEMANTICS seçeneği ile birlikte kullanın.

  • Tam metin dizin oluşturma için zaten etkinleştirilmiş bir sütuna anlamsal dizin oluşturma eklemek için seçeneğini kullanın ADD STATISTICAL_SEMANTICS . Tek bir ALTER deyimdeki bir sütuna yalnızca semantik dizinleme ekleyebilirsiniz.

Örnek: Zaten tam metin dizini olan bir sütuna anlamsal dizin ekleme

Aşağıdaki örnek, Production.Document örnek veritabanındaki AdventureWorks2025 tabloda var olan bir tam metin dizinini değiştirir. Örnek, Document tablosunun Production.Document sütununa, zaten tam metin dizini olan bir semantik dizin ekler. Örnek, dizinin otomatik olarak yeniden doldurulmadığını belirtir.

ALTER FULLTEXT INDEX ON Production.Document
    ALTER COLUMN Document
        ADD Statistical_Semantics
    WITH NO POPULATION
GO

SQL Server Management Studio kullanarak anlam dizini ekleme

Full-Text Dizin Özellikleri iletişim kutusunun Full-Text Dizin Sütunları sayfasında anlamsal ve tam metin dizin oluşturma için etkinleştirilmiş sütunları değiştirebilirsiniz. Daha fazla bilgi için bkz. Full-Text Dizinlerini Yönetme.

Semantik dizini değiştirme

Mevcut dizini değiştirmek için gereksinimler ve kısıtlamalar

  • Dizinin popülasyonu devam ederken var olan bir dizini değiştiremezsiniz. Dizin popülasyonunun ilerleme durumunu izleme hakkında daha fazla bilgi için bkz. Anlam Aramasını Yönetme ve İzleme.

  • Bir sütuna dizin ekleyemez, aynı sütunun dizinini tek bir ALTER FULLTEXT INDEX deyimiyle değiştiremez veya kaldıramazsınız.

Anlam dizini bırakma

Var olan bir tam metin dizinini ALTER FULLTEXT INDEX ifadesiyle değiştirdiğinizde, anlamsal dizinlemeyi bırakabilirsiniz. AYRıCA SQL Server Management Studio'daki çeşitli iletişim kutularını kullanarak semantik dizin oluşturmayı bırakabilirsiniz.

Transact-SQL kullanarak anlam dizini bırakma

Bir veya birden fazla sütundan semantik dizinlemeyi düşürmek için ALTER FULLTEXT INDEX deyimini "ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS" seçeneğiyle çağırın. Birden çok sütundaki dizini tek bir ALTER deyimde kaldırabilirsiniz.

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP STATISTICAL_SEMANTICS;
GO

Bir sütundan hem tam metin hem de semantik dizini kaldırmak için ALTER FULLTEXT INDEX ifadesini ALTER COLUMN <column_name> DROP seçeneğiyle çağırın.

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP;
GO

SQL Server Management Studio ile anlamsal bir dizini düşürme

Full-Text Dizin Özellikleri iletişim kutusunun Full-Text Dizin Sütunları sayfasında anlamsal ve tam metin dizin oluşturma için etkinleştirilmiş sütunları değiştirebilirsiniz. Daha fazla bilgi için bkz. Full-Text Dizinlerini Yönetme.

Semantik dizini bırakma gereksinimleri ve kısıtlamaları

  • Semantik dizin oluşturmayı korurken bir sütundan tam metin dizini bırakamazsınız. Anlamsal dizin oluşturma, belge benzerliği sonuçları için tam metin dizinlemeye bağlıdır.

  • Semantik dizin oluşturmanın NO POPULATION etkinleştirildiği tablodaki son sütundan semantik dizin oluşturmayı bıraktığınızda seçeneğini belirtemezsiniz. Daha önce dizine alınan sonuçları kaldırmak için bir popülasyon döngüsü gereklidir.

Veritabanı nesnelerinde anlamsal aramanın etkinleştirilip etkinleştirilmediğini denetleyin

Bir veritabanı için anlamsal arama etkinleştirildi mi?

IsFullTextEnabled DATABASEPROPERTYEX (Transact-SQL) meta veri işlevinin özelliğini sorgular.

dönüş değeri 1 , veritabanı için tam metin araması ve anlamsal aramanın etkinleştirildiğini gösterir. dönüş değeri 0 , bunların etkinleştirilmediğini gösterir.

SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO

Tablo için anlamsal arama etkinleştirildi mi?

TableFullTextSemanticExtraction OBJECTPROPERTYEX (Transact-SQL) meta veri işlevinin özelliğini sorgular.

1 dönüş değeri, tablo için anlamsal aramanın etkinleştirildiğini gösterir; 0 dönüş değeri etkinleştirilmediğini gösterir.

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO

Sütun için anlamsal arama etkin mi?

Belirli bir sütun için semantik aramanın etkinleştirilip etkinleştirilmediğini belirlemek için:

  • StatisticalSemantics COLUMNPROPERTY (Transact-SQL) meta veri işlevinin özelliğini sorgular.

    1 dönüş değeri, sütun için anlamsal aramanın etkinleştirildiğini gösterir; 0 dönüş değeri etkinleştirilmediğini gösterir.

    SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics');
    GO
    
  • Tam metin dizini için katalog görünümünü sys.fulltext_index_columns (Transact-SQL) sorgular.

    Sütundaki statistical_semantics 1 değeri, belirtilen sütunun tam metin dizini oluşturmanın yanı sıra anlamsal dizin oluşturma için etkinleştirildiğini gösterir.

    SELECT * FROM sys.fulltext_index_columns
    WHERE object_id = OBJECT_ID('table_name');
    GO
    
  • Management Studio'daki Nesne Gezgini'nde bir sütuna sağ tıklayın ve Özellikler'i seçin. Sütun Özellikleri iletişim kutusunun Genel sayfasında İstatistiksel Anlam özelliğinin değerini işaretleyin.

    True değeri, tam metin dizini oluşturmanın yanı sıra semantik dizin oluşturma için belirtilen sütunun etkinleştirildiğini gösterir.

Anlamsal arama için hangi dillerin desteklendiğine bakın

Anlamsal dizin oluşturma için tam metin dizinlemeden daha az dil desteklenir. Sonuç olarak, tam metin araması için dizine ekleyebileceğiniz ancak anlamsal arama için dizine ekleyemeyeceğiniz sütunlar olabilir.

Katalog görünümünü sys.fulltext_semantic_languages (Transact-SQL) sorgular.

SELECT * FROM sys.fulltext_semantic_languages;
GO

Anlamsal dizin oluşturma için aşağıdaki diller desteklenir. Bu liste, LCID tarafından sıralanmış sys.fulltext_semantic_languages (Transact-SQL) katalog görünümünün çıkışını temsil eder.

Language LCID
Geleneksel Çince 1028
Almanca 1031
İngilizce (ABD) 1033
Fransızca 1036
İtalyanca 1040
Brezilyalı 1046
Rusça 1049
İsveç dili 1053
Basitleştirilmiş Çince 2052
Britanya İngilizcesi 2057
Portekizce 2070
Çince (Hong Kong, SAR, PRC) 2070
İspanyolca 3082
Çince (Singapur) 4100
Çince (Macao SAR) 5124

Uyarı

Sonuçlar boşsa Anlam Dili İstatistikleri veritabanını indirip yüklemeniz gerekir. Daha fazla bilgi için bkz. Anlam Dili İstatistikleri Veritabanını yükleme, ekleme ve kaydetme.

Hangi belge türlerinin dizine alınabileceğini belirleme

Katalog görünümünü sys.fulltext_document_types (Transact-SQL) sorgula.

Dizine eklemek istediğiniz belge türü desteklenen türler listesinde değilse, ek filtreleri bulmanız, indirmeniz ve yüklemeniz gerekebilir. Daha fazla bilgi için bkz. Kayıtlı Filtreleri ve Sözcük Ayırıcıları Görüntüleme veya Değiştirme.

En iyi yöntem: Tam metin ve anlam dizinleri için ayrı bir dosya grubu oluşturma

Disk alanı ayırma önemliyse, tam metin ve semantik dizinler için ayrı bir dosya grubu oluşturmayı göz önünde bulundurun. Anlam dizinleri, tam metin diziniyle aynı dosya grubunda oluşturulur. Tam olarak doldurulmuş bir anlam dizini büyük miktarda veri içerebilir.

Sorun: Belirli bir sütunda arama yaparak sonuç döndürmez

Unicode dili için Unicode olmayan bir LCID belirtildi mi?

Rusça için LCID 1049 gibi yalnızca Unicode sözcükleri içeren bir dil için LCID ile Unicode olmayan bir sütun türünde anlamsal dizin oluşturmayı etkinleştirmek mümkündür. Bu durumda, bu sütundaki semantik dizinlerden hiçbir sonuç döndürülmüyor.