Tam metin arama ile başlamak

Veritabanları içinde SQL Servertam metin varsayılan olarak etkin olan. Ancak tablo üzerinde bir tam metin dizini kullanmak için tam metin dizin oluşturma yeteneğini tam metin altyapısı kullanarak erişmek istediğiniz tabloların sütunları ayarlamanız gerekir.

Bu Konuda

  • Bir veritabanı tam metin araması için yapılandırma

  • Tam metin kataloğu ve dizin ayarları

  • Tam metin dizin seçeneklerini seçme

  • Örnek: Tam metin aramayı ayarlama

  • Ortak görevler

Bir veritabanı tam metin araması için yapılandırma

Herhangi bir senaryo için bir veritabanı yöneticisi veritabanında tam metin arama için tablo sütunları yapılandırmak için aşağıdaki temel adımları gerçekleştirir:

  1. Tam metin kataloğunu oluşturun.

  2. Aramak istediğiniz her tablo üzerinde bir tam metin dizini tarafından oluşturun:

    1. Tam metin dizini eklemek istediğiniz her metin sütunları tanımlayın.

    2. Belirli bir sütun ikili verileri olarak depolanan belgeler içeriyorsa (varbinary(max), ya imageveri), tablo sütun belirtmelisiniz ( türü sütun) endekslenmiyor sütununda her belge türünü tanımlayan.

    3. Tam metin arama sütunu belgelerde kullanmak istediğiniz dili belirtin.

    4. Temel tablo ve sütunlarını izlemek için tam metin dizini kullanmak istediğiniz değişiklik izleme mekanizması seçin.

Tam metin araması destekler, aşağıdakileri kullanarak birden çok dilde dile ait bileşenleri: sözcük ayırıcılarını ve sözcük köklerini, stopwords (parazit kelime olarak da bilinir) ve eş anlamlılar dosyaları stoplists. Eş anlamlılar dosyaları ve bazı durumlarda stoplists veritabanı yöneticisi tarafından yapılandırılmasını gerektirir. Belirtilen eş anlamlılar dosyası lisanı kullanan tüm tam metin dizinlerini destekler ve belirli bir stoplist istediğiniz kadar tam metin dizinleri ile ilişkili olabilir.

Tam metin kataloğu ve dizin ayarları

Bu, aşağıdaki temel adımları içerir:

  1. Tam metin dizinlerini depolamak için tam metin kataloğunu oluşturun.

    Her tam metin dizini için bir tam metin kataloğu ait olması gerekir. Her tam metin dizini için ayrı metin katalog oluşturabilir veya birden fazla tam metin dizinleri belirli bir kataloğu ile ilişkilendirebilirsiniz. Tam metin kataloğu sanal bir nesne ve tüm filegroup ait değil. Kataloğu tam metin dizinleri grubuna başvuran mantıksal bir kavramdır.

  2. Bir tam metin dizini, tablo veya dizin oluşturulmuş görünüm oluşturun.

    Bir tam metin dizini oluşturulmuş olup, tam metin alt yapısı tarafından tutulan belirteç tabanlı fonksiyonel dizin özel bir türüdür. Bir tablo ya da görünüm üzerinde tam metin arama oluşturmak için bu benzersiz, tek sütunlu, NULL olmayan-olabilecek bir dizin olması gerekir. Tablodaki her satır için bir benzersiz, sıkıştırılabilir anahtar eşlemek için bu benzersiz dizini tam metin altyapısı gerektirir. A full-text index can include char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, and varbinary(max) columns. Daha fazla bilgi için, bkz. Oluşturun ve tam metin dizinleri Yönet.

Tam metin dizinlerini oluşturma hakkında daha fazla öğrenme önce nasıl onlar normal farklı düşünmeye önemli SQL Serverdizinler. Aşağıdaki tabloda, farklılıklar.

Tam metin dizinleri

Normal SQL Server dizinleri

Her tablo için izin tek bir tam metin dizini.

Her tablo için izin birkaç normal dizinler.

Tam metin dizinlerini, verilere ek olarak adlandırılan bir nüfusu, zamanlama veya belirli bir isteği ile talep edilebilir veya otomatik olarak yeni veri eklenmesiyle oluşabilir.

Otomatik olarak güncelleştirilen ne zaman onlar dayandırıldığı veri, güncelleştirilmiş veya silinmiş eklenir.

Aynı veritabanı içinde bir veya daha fazla tam metin kataloglar gruplandırılmış.

Gruplandırılmış değil.

[YUKARI]

Tam metin dizin seçeneklerini seçme

Bu bölümde aşağıdaki konular açıklanmıştır:

  • Sütun dil seçme

  • Seçme bir tam metin dizini filegroup

  • Bir tam metin kataloğu için tam metin dizini atama

  • Tam metin dizini ile bir stoplist ilişkilendirme

  • Bir tam metin dizini güncelleştirme

Sütun dil seçme

Ne zaman sütun dil seçerken dikkat etmeniz gereken şeyler hakkında daha fazla bilgi için bkz: Bir tam metin dizini oluşturma, bir dil seçin.

Bir tam metin dizini için bir dosya grubu seçme

Tam metin dizin oluşturma işlemi oldukça I/O yoğun olduğu (yüksek bir düzeyde veri okuma oluşur SQL Serverve sonra filtre uygulanmış verileri için tam metin dizini yayılıyor). En iyi yöntem olarak, g/Ç performansı maksimize etmek için en iyi veritabanı filegroup bir tam metin dizini bulun veya başka bir birime farklı bir filegroup tam metin dizinleri bulun.

Yönetim kolaylığı için önemli olduğunda, aynı filegroup tablo veri ve herhangi bir bağlı tam metin kataloglar depolamanızı öneririz. Bazen, performansla ilgili nedenlerden dolayı tablo verilerinin ve tam metin dizini I/O paralellik maksimize etmek için farklı birimlerde depolanan farklı filegroups var isteyebilirsiniz.

[YUKARI]

Bir tam metin kataloğu için tam metin dizini atama

Tam metin dizinlerini tabloları tam metin kataloglar için yerleşim planı önemlidir.

Tablolar da aynı güncelleştirme özellikleri (örneğin, değişiklikleri karşı değişiklikler veya gün belirli bir süre içinde sık sık değişiklik tabloları çok sayıda küçük sayı) ile ilişkilendirerek birlikte altında aynı tam metin kataloğu öneririz. Tam metin kataloğu popülasyon zamanlama kadar ayarlayarak, tam metin dizinlerini veritabanı sunucusunun kaynak kullanımı yüksek veritabanı etkinlik dönemleri sırasında olumsuz etkilemeden tabloları eşzamanlı muaftır.

Bir tablo için tam metin kataloğu atadığınızda, aşağıdaki yönergeleri dikkate alın:

  • Her zaman en küçük benzersiz dizini tam metin benzersiz anahtar için kullanılabilir seçin. (4 Bayt, tamsayı tabanlı bir dizin en iyi olur.) Bu azaltır tarafından gerekli kaynakları MicrosoftArama hizmeti dosya sisteminde önemli. Birincil anahtar (100) büyük bayttır (veya başka bir benzersiz dizin oluşturma) benzersiz bir dizin tam metin benzersiz anahtar olarak seçerek düşünün. Aksi takdirde, tam metin benzersiz anahtar boyutu (900 bayt) izin verilen en büyük boyutu aşarsa, tam metin popülasyonu devam etmek mümkün olmayacaktır.

  • Milyonlarca satır olan bir tabloda dizin tabloyu kendi tam metin kataloğu atayın.

  • Toplam satır sayısı olarak tam metin olarak tablolarda değişimleri miktarı, dizine göz önünde bulundurun. Son tam metin popülasyon sırasında mevcut tablodaki satır numaraları ile birlikte değişen satır sayısı satırları milyonlarca gösteren tablo kendi tam metin kataloğu atayın.

[YUKARI]

Tam metin dizini ile bir Stoplist ilişkilendirme

SQL Server 2008Stoplists tanıttı. A stoplist stopwords, olarak da bilinen etkisiz sözcükler listesi. Her tam metin dizini ile bir stoplist ilişkilidir ve şu sözleri bu stoplist tam metin sorguları bu dizin üzerinde uygulanır. Varsayılan olarak, sistem stoplist yeni bir tam metin dizini ile ilişkili. Ancak oluşturabilir ve kendi stoplist kullanın. Daha fazla bilgi için, bkz. Yapılandırma ve Stopwords ve Stoplists için tam metin araması yönetme.

Örneğin, aşağıdaki create fulltext STOPLIST Transact-SQL deyimi sistem stoplist kopyalayarak myStoplist3 adlı yeni bir tam metin stoplist oluşturur:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO

Aşağıdaki alter fulltext STOPLIST Transact-SQL deyimi ilk İspanyolca ve sonra Fransızca kelime 'tr', ekleme, myStoplist adlı bir stoplist değiştirir:

ALTER FULLTEXT STOPLIST MyStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST MyStoplist ADD 'en' LANGUAGE 'French';
GO

[YUKARI]

Bir tam metin dizini güncelleştirme

Gibi normal SQL Serverdizin, tam metin dizinleri otomatik olarak güncelleştirilebilir ilişkili tablolardaki verilerde değişiklik gibi. Bu varsayılan davranıştır. Alternatif olarak, tam metin dizinleri güncel belirtilen zamanlanmış aralıklarla veya el ile tutabilirsiniz. Bir tam metin dizini doldurma dolayısıyla dizini güncelleştirme genellikle bir zaman uyumsuz işlem arka planda çalışır ve sonra değişiklikler temel tablo tam metin dizini güncel tutar olarak yapılır ve kaynak yoğun zaman olabilir. Sonra hemen her değişikliğin temel tablodaki kaynak yoğun olabilir bir tam metin dizini güncelleştirme. Bu nedenle, çok yüksek bir güncelleme/ekleme/silme oranı varsa, sorgu performansı bazı düşüşü yaşayabilirsiniz. Bu durumda, el ile değişiklik izleme ile çok sayıda değişiklikleri zaman, sorguları kaynaklar için rekabet yerine yetişmek için güncelleştirmeleri zamanlama düşünün.

Popülasyon durumu izlemek için fulltextcatalogproperty veya objectpropertyex işlevlerini kullanın. Katalog popülasyon durumu almak için aşağıdaki deyimi çalıştırın:

SELECT FULLTEXTCATALOGPROPERTY('AdvWksDocFTCat', 'Populatestatus');

Tipik olarak, tam bir popülasyon devam ediyor ise, döndürülen sonuç 1 olur.

[YUKARI]

Örnek: Tam metin aramayı ayarlama

Aşağıdaki iki bölümü örnek, adlı bir tam metin kataloğu oluşturur AdvWksDocFTCatAdventureWorks veritabanı ve üzerinde bir tam metin dizini oluşturur Documenttablo AdventureWorks2012 . Bu ifade, varsayılan dizine kurulum sırasında belirtilen tam metin kataloğu oluşturur. Adlı klasörü AdvWksDocFTCatvarsayılan dizindir.

  1. Adlı bir tam metin kataloğu oluşturmak için AdvWksDocFTCat, örnek bir create fulltext catalog deyimi:

    USE AdventureWorks;
    GO
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;
    
  2. Belge tablo üzerinde bir tam metin dizini oluşturmak için önce tablonun benzersiz, tek sütunlu, NULL olmayan-olabilecek bir dizin olduğundan emin olun. Aşağıdaki create INDEX deyimi oluşturur benzersiz bir dizin ui_ukDoc, DocumentIDbelge tablo sütun:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
    
  3. Benzersiz bir anahtar oluşturduktan sonra üzerinde bir tam metin dizini oluşturabilirsiniz Documentkullanarak aşağıdaki tabloda create fulltext INDEX deyimi.

    CREATE FULLTEXT INDEX ON Production.Document
    (
        Document                         --Full-text index column name 
            TYPE COLUMN FileExtension    --Name of column that contains file type information
            Language 2057                 --2057 is the LCID for British English
    )
    KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index
    WITH CHANGE_TRACKING AUTO            --Population type;
    GO
    

    Bu örnekte tanımlanan türü sütun tipi sütun 'Document' sütunun her satırındaki belge türünü içeren tabloyu belirtir (ikili türü olan). Kullanıcı tarafından sağlanan dosya uzantısı türü sütununda depolar — ".doc", ".xls" vb. — belgenin belirli bir satır. Tam metin altyapısı, bu satırdaki verileri ayrıştırmak için kullanılacak doğru filtre çağırmak için belirli bir satırda dosya uzantısını kullanır. Sonra filtre ayrıştırılmış ikili verileri satır, belirtilen sözcük ayırıcısı içeriği ayrıştırmaz (Bu örnekte, İngiliz İngilizce sözcük ayırıcısı kullanılır). Not filtre uygulama işlemi yalnızca zaman dizin oluşturma olur ya da bir kullanıcı ekler veya temel tablodaki sütun güncelleştirmeler otomatik değişiklik izleme için tam metin dizin etkin. Daha fazla bilgi için, bkz. Yapılandırmak ve arama filtrelerini yönetme.

[YUKARI]

Ortak görevler

Bir tam metin kataloğu oluşturmak için

Tablo (veya Görünüm) dizinleri görüntülemek için

Benzersiz bir dizin oluşturmak için

Bir tam metin dizini oluşturmak için

Tam metin dizini hakkında bilgi görüntülemek için

Katalog veya dinamik yönetimi görünümü

Açıklama

sys.fulltext_index_catalog_usages (Transact-sql)

Bir satırın her tam metin kataloğu için tam metin dizini başvuru verir.

sys.fulltext_index_columns (Transact-sql)

Bir tam metin dizini parçası olan her sütun için bir satır içerir.

sys.fulltext_index_fragments (Transact-sql)

Fulltext dizin iç tablolar, tam metin dizini parçaları olarak adlandırılan ters dizin verileri depolamak için kullanır. Bu görünüm, bu parçaları hakkında meta verileri sorgulamak için kullanılabilir. Bu görünüm, her tam metin dizini parçası olarak bir tam metin dizini içeren her tablo için bir satır içerir.

içinsys.fulltext_indexesKatalog (Transact-sql)

Sekmeli nesne tam metin dizini başına bir satır içerir.

sys.dm_fts_index_keywords (Transact-sql)

Belirtilen tablo için tam metin dizini içeriği hakkında bilgi verir.

sys.dm_fts_index_keywords_by_documentbir (Transact-sql)

Belirtilen tablo için tam metin dizin belge düzeyinde içeriği hakkında bilgi verir. Belirli bir anahtar kelime, çeşitli belgelerde görünebilir.

sys.dm_fts_index_population (Transact-sql)

Tam metin dizini nüfus bilgileri şu anda devam eden döndürür.

[YUKARI]

Ayrıca bkz.

Başvuru

fulltext Katalog (Transact-sql) oluştur

fulltext INDEX (Transact-sql) oluştur

fulltext STOPLIST (Transact-sql) oluştur

Tablo (Transact-sql) oluştur

fulltextcatalogproperty (Transact-sql)

objectpropertyex (Transact-sql)

Kavramlar

Tam metin dizinlerini doldurma