Aracılığıyla paylaş


Tam metin arama ile çalışmaya başlama

Veritabanları, SQL Server olan tam metin etkin olarak varsayılan.Bununla birlikte, tablo üzerinde bir tam metin dizini kullanmak için yapmanız gerekenler küme up tam-metin arama motoru kullanarak erişmek istediğiniz tabloların sütunları tam metin dizin oluşturma yeteneği.

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

  1. Tam metin dizinlerini depolamak için tam metin kataloğu 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 katalogla ilişkilendirebileceğiniz.

    Not

    İçinde başlayan SQL Server 2008, bir tam metin kataloğu sanal nesnesi ve ait değil herhangi dosya grubu.Tam metin kataloğu tam metin dizinleri bir gruba başvuruda bulunan mantıksal bir kavramdır.

  2. Tablo veya dizinli görünüm üzerinde bir tam metin dizini oluşturun.

    Tam metin dizini oluşturulmuş ve tam metin alt yapısı tarafından tutulan belirteci tabanlı işlevsel dizin özel bir türüdür.Bir tablo ya da görünüm üzerinde tam metin araması oluşturmak için bu benzersiz bir tek - olması gerekirsütun, yapılamayan dizin.Her satırda eşlemek için bu benzersiz dizin tam metin altyapısı gerektirir tablo için sıkıştırılabilir benzersiz bir anahtar.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: Tam metin dizin oluşturma genel bakış.

Tam metin dizinlerini oluşturma hakkında daha fazla öğrenme önce nasıl normal birbirinden farklı göz önüne almanız gereken önemli SQL Server Dizinler.Aşağıdaki tablo farkları listeler.

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 dizinleri için veri toplama adı verilen bir popülasyon, bir zamanlama veya belirli bir isteği istenen veya otomatik olarak yeni veri eklenmesiyle oluşabilir.

Ne zaman bağlı oldukları temel alan veri, güncelleştirilmiş veya silinmiş eklenir otomatik olarak güncelleştirilir.

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

Gruplandırılmış değil.

Tam metin dizini oluştururken dikkat edilmesi gereken noktalar

Bu bölüm aşağıdakileri kapsar:

  • Sütun dil seçme

  • Tam metin dizini için bir dosya grubu seçme

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

  • Tam metin dizini ile bir stoplist ilişkilendirme

  • Tam metin dizini güncelleştirme

Sütun dil seçme

Ne zaman sütun dil seçme göz önünde bulundurulması gereken noktalar hakkında daha fazla bilgi için bkz: Tam metin dizini oluşturma, bir dil seçme en iyi yöntemler.

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

Tam metin dizin oluşturma işlemi oldukça yoğun g/Ç, (yüksek üzerinde düzey, bu veri okuması olduğu SQL Serverve sonra filtre uygulanmış verileri için tam metin dizini yayılıyor).En iyi yöntem olarak, g/Ç performansı en üst düzeye çıkarmak için en iyi veritabanı dosya grubu tam metin dizini bulun veya başka bir birimin farklı bir dosya grubu tam metin dizinleri bulun.

Yönetimi kolaylaştırmak için önemlidir, aynı dosya grubu içinde tablo verileri ve bağlı olduğunuz tüm tam metin kataloglar saklamak öneririz.Bazı durumlarda, performansla ilgili nedenlerden dolayı tablo verileri ve full-text Index g/Ç parallelism en üst düzeye çıkarmak için farklı birimlerde depolanan farklı filegroups sağlamak isteyebilirsiniz.

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

Tabloları tam metin kataloğu için tam metin dizinlerini yerleşimini planlama önemlidir.

Aynı güncelleştirme özelliklere sahip tablolar ilişkilendirme öneririz (az sayıda karşı çok sayıda değişiklikleri veya sırasında belirli bir sık sık değiştirmek tabloları değişiklikleri gibi saat günü) birlikte aynı tam metin kataloğu altında.Tam metin kataloğu popülasyon planlarını ayarlayarak, tam metin dizinlerini veritabanı sunucusunun kaynak kullanımı yüksek veritabanı etkinliğini dönemlerde olumsuz etkilemeden tabloları ile zaman uyumlu kalır.

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

  • Her zaman en küçük benzersiz dizin tam metin benzersiz anahtar için kullanılabilir seçin.(4 Bayt, tamsayı tabanlı bir dizin en iyi olur.) Bunun için gereken kaynakları azaltır Microsoft hizmet dosya sistemindeki önemli ölçüde aramak.Birincil anahtar (100) büyük bayttır, tablo (veya başka bir benzersiz dizin oluşturma) başka bir benzersiz dizini 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ülasyon devam etmek mümkün olmayacaktır.

  • Milyonlarca satır içeren bir tablo sıralıyorsanız, tablo için kendi tam metin kataloğu atayın.

  • Toplam satır sayısı olarak gerçekleşen tam metin olan tablolarda değişiklik miktarını, dizine göz önünde bulundurun.Toplam satır sayısı, satır numaraları ile birlikte değiştirilmesini, tablo Bugünü temsil milyonlarca satır, son tam metin doldurma sırasında Ata tablo kendi tam metin kataloğu.

Tam metin dizini ile bir Stoplist ilişkilendirme

SQL Server 2008 stoplists tanıtır.A stoplist stopwords, etkisiz sözcükler olarak da bilinen bir listesidir.Her tam metin dizini ile bir stoplist ilişkilidir ve sözleri o stoplist tam metin sorguları bu dizin üzerinde uygulanır.Varsayılan olarak, sistem stoplist yeni bir tam metin dizini ile ilişkilidir.Ancak, oluşturun ve bunun yerine kendi stoplist kullanın.Daha fazla bilgi için bkz: Stopwords ve Stoplists.

For example, the following CREATE FULLTEXT STOPLIST Transact-SQL statement creates a new full-text stoplist named myStoplist3 by copying from the system stoplist:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO

The following ALTER FULLTEXT STOPLIST Transact-SQL statement alters a stoplist named myStoplist, adding the word 'en', first for Spanish and then for French:

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

Tam metin dizini güncelleştirme

Normal gibi SQL Server dizin, tam metin dizinleri otomatik olarak güncelleştirilebilir gibi verilerde değişiklik ilişkili tablolar.Bu varsayılan davranıştır.Alternatif olarak, tam metin dizinleri ayak uydurabiliyoruz-için-tarih veya el ile belirtilen zamanlanmış aralıklarla.Tam metin dizini yerleştirmek saat ve kaynak yoğun, bu nedenle, dizin güncelleştirme genellikle arka planda çalışan ve tam metin dizini en fazla tutar saat uyumsuz bir işlem gerçekleştirilen tarih sonra değişiklikler temel tablo içinde.Hemen her değişiminde temel tablo kaynak yoğun olabilir sonra tam metin dizini güncelleştirme.Bu nedenle, INSERT/update/delete hızının çok yüksek olması, bazı sorgu performans düşüşü yaşayabilirsiniz.Bu durumda, el ile değişiklik izleme ile çok sayıda değişiklikleri saat saat sorguları kaynaklar için rekabet yerine kaçırmamak için güncelleştirmeleri zamanlama düşünün.

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

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

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

Örnek: Tam metin arama (Transact-sql) ayarlama

Adlı bir tam metin kataloğu aşağıdaki iki bölümü örnek oluşturur AdvWksDocFTCat , AdventureWorks2008R2 veritabanı ve üzerinde bir tam metin dizini oluşturur Document tablo , AdventureWorks2008R2.Bu deyim, Kurulum sırasında belirtilen varsayılan dizine tam metin kataloğu oluşturur.Adlı klasörü AdvWksDocFTCat olduğu varsayılan dizin.

  1. Adlı bir tam metin kataloğu oluşturmak için AdvWksDocFTCat, örnek bir Full-Text catalog oluşturma deyim:

    USE AdventureWorks2008R2;
    GO
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;
    
  2. Tam metin dizini oluşturmak için önce Document Tablo, bir tablo benzersiz bir tek - sahip olduğundan emin olunsütun, yapılamayan dizini.Aşağıdaki create INDEX deyim, benzersiz dizin oluşturur ui_ukDoc, DocumentID sütunu Document tablo:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
    
  3. Benzersiz bir anahtar oluşturduktan sonra üzerinde bir tam metin dizini oluşturabilirsiniz Document tablo aşağıdakileri kullanarak create Full-Text Index deyim.

    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 türü sütununda, her satır sütun 'Document' belge türünü içeren tablo belirtir (hangi ikili türüdür).Türü sütun kullanıcı tarafından sağlanan dosya uzantısı depolar — ".doc", ".xls" vb. — belgenin belirli bir satırda.Tam-metin arama motoru o 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.Belirtilen sözcük ayırıcı ikili veri satır filtre ayrýþtýrýlmýþ sonra içerik ayrıştırmaz (Bu örnekte, İngiliz İngilizce sözcük ayırıcısı kullanılır).Not filtre uygulama işlemi yalnızca saat dizin oluşturma sırasında olur veya bir kullanıcı ekler veya güncelleştiren bir sütun otomatik değişiklik yaparken temel tablo izleme için tam metin dizini etkinleştirilir.Daha fazla bilgi için bkz: Tam metin arama filtreleri.

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)

Her tam metin kataloğu için bir satır için tam metin dizin başvurusunu verir.

sys.fulltext_index_columns (Transact-sql)

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

sys.fulltext_index_fragments (Transact-sql)

Ters dizin verileri depolamak için iç tablo tam metin dizini parça adlı bir tam metin dizini kullanır.Bu görünüm, bu parçaları hakkında meta veriler sorgulamak için kullanılabilir.Bu görünüm, her tam metin dizini parçasındaki tam metin dizini içeren her tablo için bir satır içerir.

sys.fulltext_indexes (Transact-sql)

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

sys.dm_fts_index_keywords (Transact-sql)

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

sys.dm_fts_index_keywords_by_document (Transact-sql)

Belge - bilgi verirdüzey belirtilen tablo için tam metin dizininin içeriği.Belirli bir anahtar sözcüğü çeşitli belgelerde görünebilir.

sys.dm_fts_index_population (Transact-sql)

Tam metin dizini yerleştirme hakkında bilgileri şu anda devam eden döndürür.