Aracılığıyla paylaş


tam metin araması ile çalışmaya başlama

Veritabanlarında SQL Server tam metin varsayılan olarak etkinleştirilmiştir. Ancak, tablo üzerinde bir tam metin dizini kullanmak için , tam metin alt yapısı'nı kullanarak erişmek istediğiniz tabloların sütunları tam metin dizin oluşturma yeteneğini ayarlamanız gerekir.

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

  1. Tam metin dizinleriyle depolamak için bir tam metin kataloğu oluşturun.

    Her bir tam metin dizini için bir tam metin kataloğu ait olması gerekir.Her bir tam metin dizini için ayrı metin katalog oluşturabilirsiniz veya belirli bir kataloğu ile birden çok tam metin dizinleriyle ilişkilendirebilirsiniz.

    Not

    Içinde başlangıç SQL Server 2008, bir tam metin kataloğu sanal bir veritabanı nesnesidir ve herhangi bir dosya grubu için ait değil. Bir tam metin kataloğu tam metin dizinleriyle bir gruba başvuran mantıksal bir kavram olduğunu.

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

    Bir tam metin dizini oluşturulmuş ve tam metin motoru tarafından tutulan token-based işlevsel dizin özel bir türüdür.tam metin araması, bir tablo veya görünüm oluşturmak için , benzersiz, tek sütunlu, NULL olmayan bir dizin olmalıdır.Bu benzersiz dizin, her satırda eşleştirmek için tam metin alt yapısı gerektirir tablo benzersiz, sıkıştırılabilir anahtarına.Bir tam metin dizini içerebilir char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, ve varbinary(max) sütunlar. 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 ' farklı dikkate almanız önemlidir SQL Server dizinler. Aşağıdaki tabloda, farklılıkları listeler.

Tam metin dizinleri

Normal bir SQL Server indeksleri

Her tablo için izin yalnızca bir tam metin dizini.

Her tablo için izin birkaç Normal dizinler.

Ek verilerin tam metin dizinlerini, adlı bir popülasyon, zamanlamayı veya belirli bir isteği yoluyla bu güvenlik açığından istenebilir veya otomatik olarak yeni bir veri eklenmesiyle oluşur.

Otomatik olarak güncelleştirildi, olduğu, temel alan veriler, güncelleştirilmiş ya da silinmiş eklenir.

Aynı veritabanı içinde bir veya daha çok tam metin Kataloğu gruplandırılır.

Gruplandırılmış değil.

Bir tam metin dizin oluşturma sırasında dikkat edilecek noktalar

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

  • Sütun dil seçme

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

  • Tam metin dizini için bir tam metin kataloğu atama

  • Tam metin dizinine bir stoplist ilişkilendirme

  • Bir tam metin dizini güncelleştirme

Sütun dili seçme

Sütun dil seçerken göz önüne alınması gereken noktalar hakkında daha fazla bilgi için bkz: Bir tam metin dizini oluşturma, bir dil seçme ile ilgili en iyi yöntemler.

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

Bir tam metin dizini oluşturma işlemi oldukça, g/Ç yoğun olduğu (yüksek düzeyde, verileri okunurken oluşur SQL Serverve sonra da filtre uygulanmış verileri için tam metin dizini yayılıyor). En iyi yöntem olarak, g/Ç performansı en üst düzeye çıkarma için en iyi veritabanı dosya grubu bir tam metin dizini bulun veya başka bir birim üzerinde farklı bir dosya grubunun tam metin dizinleriyle bulun.

Yönetim kolaylığı sizin için önemliyse aynı dosya grubu tablo verilerini ve tüm affiliated tam metin Kataloğu depolamanız önerilir.Bazı durumlarda, performansla ilgili nedenlerden dolayı g/Ç parallelism en üst düzeye çıkarmak için farklı birimlerde depolanan farklı bir dosya gruplarını tablo verilerini ve tam metin dizini sağlamak isteyebilirsiniz.

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

Tam metin Kataloğu tabloları için tam metin dizinleriyle yerleşimini planlamak önemlidir.

Aynı güncelleştirme özelliklerini (örneğin, az sayıda ve çok sayıda değişiklik veya tablolar, genellikle belirli bir zamanın günün sırasında değişiklikleri) ile tabloları ilişkilendirme birlikte altında aynı olan tam metin kataloğu öneririz.tam metin kataloğu popülasyon planlarını ayarlayarak, tam metin dizinleriyle veritabanı sunucusunun kaynak kullanımı yüksek veritabanı dönemlerde olumsuz etkilemeden sahip tablolar zaman uyumlu kalır.

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

  • Her zaman en küçük benzersiz dizin için tam metin benzersiz anahtarınızı kullanılabilir seçin.(4 Bayt), tamsayı dayalı bir dizin en iyi olur.) Bu tarafından gerekli kaynakları azaltırMicrosoft Hizmet, dosya sisteminde önemli ölçüde arayın. birincil anahtar büyük (100'den bayt) ise, başka bir benzersiz dizin içinde seçme dikkate tablo (veya başka bir benzersiz dizin oluşturma) tam metin benzersiz anahtar.Aksi durumda, tam metin benzersiz anahtar boyutu (900 bayt), izin verilen en büyük boyutu aşarsa tam metin popülasyon devam etmek gideremez ve çözemez.

  • Satır milyonlarca olan bir tabloda dizin oluşturma, tablo için kendi tam metin kataloğu atayın.

  • Toplam satır sayısını yaný sýra tam metin tablolarda gerçekleşen bir değişiklik miktarını, dizine göz önünde bulundurun.Son tam metin doldurma sırasında tablosunda satır numaralarını birlikte değiştirilmesini satır sayısı, satır milyonlarca temsil ediyorsa, tablo için kendi tam metin kataloğu atayın.

Tam metin dizini ile bir Stoplist ilişkilendirme

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

For example, the following CREATE FULLTEXT STOPLISTTransact-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 STOPLISTTransact-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

Bir tam metin dizin güncelleştiriliyor

Normal gibi SQL Server dizinler, tam metin dizinlerini, ilişkili tablolar, veri değişiklik gibi otomatik olarak güncelleştirilebilir. Bu varsayılan davranıştır.Alternatif olarak, bilgisayarınızın tam metin dizinleriyle - için - tutabilirsiniz tarih el ile veya zamanlanmış belirli aralıklarla.Bir tam metin dizini doldurma bu nedenle, dizin güncelleştirme genellikle arka planda çalışır ve sonra değişiklikler temel tabloda tam metin dizini güncel tutar, saat uyumsuz bir işlem olarak gerçekleştirilir saat ve kaynak kullanımı yoğun olabilir.Sonra hemen her değişiminde temel tablo, kaynak yoğun olabilir, bir tam metin dizini güncelleştiriliyor.Bu nedenle, çok yüksek bir ekleme/güncelleştirme/silme oranı varsa, sorgu performansını'da bazı düşmesine karşılaşabilirsiniz.Bu durumda, el ile değişiklik çok sayıda değişikliklerle birlikte kimi saat, kaynakların sorgularla rekabet yerine tutmak için güncelleştirmeleri izlemek için iş planlama çizelgeleme'yi deneyin.

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

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

Genelde tüm bir popülasyon sürüyor, döndürülen sonuç 1'dir.

Örnek: tam metin araması AdventureWorks (Transact-SQL) ayarlama

Aşağıdaki örnekte iki bölümü adlı bir tam metin kataloğu oluşturur. AdvWksDocFTCat üzerinde AdventureWorks veritabanı ve üzerinde bir tam metin dizini oluşturur Document Tablo AdventureWorks. Bu deyim, Kurulum sırasında belirtilen varsayılan dizinin tam metin kataloğu oluşturur.Adlı klasörü AdvWksDocFTCat Varsayılan dizinindedir.

  1. Adlı bir tam metin kataloğu oluşturmak için AdvWksDocFTCat, örnek olarak kullandığı bir fulltext KATALOG OLUŞTURMA deyim:

    USE AdventureWorks;
    GO
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;
    
  2. Belge tablosu üzerinde bir tam metin dizini oluşturmadan önce tabloda benzersiz bir tek-olduğundan emin olun sütun, NULL olmayan bir dizin.Aşağıdaki DİZİN OLUŞTURMA deyim benzersiz bir dizin oluşturur.ui_ukDoc, DocumentID sütun üzerinde Belge tablo:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
    
  3. Benzersiz bir anahtar oluşturduktan sonra bir tam metin dizini üzerinde oluşturabileceğiniz Document aşağıdakileri kullanarak tablo fulltext DİZİN OLUŞTURMA ekstresi.

    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 SÜTUN TÜRÜ tür sütununda belirtir tablo '(ikili türünde olan) belgeyi' sütunun her satırındaki Belge türünü içerir.Kullanıcı tarafından sağlanan dosya uzantısı türü sütun depolar; ".doc", ".xls" vb. — belgenin belirli bir satırda.Tam metin alt yapısı, o satırdaki verileri ayrıştırmak için kullanılacak doğru süzgeç çağırmak için belirli bir satırda dosya uzantısını kullanır.Belirtilen sözcük ayırıcısı, süzgeç satırın ikili veri ayrıştırıldı sonra içeriği ayrıştırmaz (örneğin, ingiltere ingilizce sözcük ayırıcısı kullanılır).Filtre uygulama işlemi, yalnızca saat dizin oluşturma sırasında olur veya kullanıcı ekler veya temel tablodaki güncelleştirir otomatik değişiklik izleme için tam metin dizini etkin unutmayın.Daha fazla bilgi için bkz:tam metin araması süzgeçleri.

Bir tam metin dizin hakkında bilgi görüntülemek için

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

Açıklama

sys.fulltext_index_catalog_usages (Transact-SQL)

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

sys.fulltext_index_columns (Transact-SQL)

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

sys.fulltext_index_fragments (Transact-SQL)

Bir fulltext dizin iç tabloları tam metin dizini parçaları adında ters dizin verileri depolamak için kullanır.Bu görünüm, bu parçaları ilgili meta veriler sorgulamak için kullanılabilir.Bu görünümü her tam metin dizini bölümü bir 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 dizin içeriği hakkında bilgi verir.

sys.dm_fts_index_keywords_by_document (Transact-SQL)

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

sys.dm_fts_index_population (Transact-SQL)

Tam metin dizini örneğin alınma olasılığını hakkındaki bilgileri şu anda devam eden döndürür.