Aracılığıyla paylaş


Bir tam metin dizini oluşturma, bir dil seçme ile ilgili en iyi yöntemler

Bir tam metin dizini oluştururken, dizili sütuna bir sütun düzey dilini belirtmeniz gerekir.The word breaker and stemmers of the specified language will be used by full-text queries on the sütun.Birkaç sütun dil bir tam metin dizini oluştururken seçerken göz önüne alınması gereken noktalar vardır.Nasıl metninizi tokenized için bu konuları arasında ilişki ve sonra tam metin altyapısı tarafından dizine.

Not

Tam metin dizini, bir sütun için bir sütun düzey dili belirlemek için , DIL kullanın. language_term sütun belirtirken yan tümce. Daha fazla bilgi için bkz: FULLTEXT INDIS (Transact-SQL) CREATE ve FULLTEXT INDIS (Transact-SQL) ALTER.

Sözcük ayırıcılarını

Bir sözcük ayırıcısı, dile özgü sözcük sınırlarının üzerinde dizini Oluşturulmakta olan metin tokenizes.Bu nedenle, sözcük bölme davranış farklı diller arasında farklılık gösterir.Tek bir dil kullanıyorsanız, x, çok sayıda dil indekslemek {x, y ve z}, bazı davranışı beklenmedik sonuçlara neden olabilir.Örneğin, bir tire (-) veya virgül (,) başka değil ancak bir dil atılmak, bir sözcüğün sonu öğesi olabilir.Ayrıca, belirli bir sözcük farklı dilde nedeniyle farklı, çünkü nadiren beklenmeyen stemming davranış oluşabilir.Örneğin, ingilizce dilinde sözcük sınırlarının normal boşluk veya noktalama çeşit uygulanır.Almanca gibi başka dillerde sözcük veya karakter birlikte yeniden birleştirilebilir.Bu nedenle, seçtiğiniz sütun düzey dili sütunun satırlarında depolanacak beklediğiniz dilde göstermelidir.

Batı dilleri

Batı dilleri hangi dillerde saklanacaktır kullanacağınızdan emin değilseniz, ailesi için bir sütun ya da birden çok depolanmak üzere beklediğiniz, genel bir geçici çözüm de depolanmış olabilir en karmaşık dili için sözcük ayırıcısı olan sütun.Örneğin, ingilizce, ispanyolca, Almanca içeriği tek bir sütunda saklamak bekleyebilirsiniz.Bu üç Batı dilleri benzer sözcük bölme desenleri, en karmaşık olan Alman desenlerle sahip.Bu nedenle, iyi bir seçenek budur durum ingilizce ve ingilizce metin doğru olarak işlemek için olması gereken Alman sözcük ayırıcısı kullanmak olacaktır.Buna ek olarak, ingilizce sözcük ayırıcı Almanca bir metnin tam anadilinizde bileşik sözcükleri nedeniyle işlemek.

Bir dil ailesinde en karmaşık dilinin sözcük ayırıcısı kullanarak her dilin ailesinde mükemmel dizin garantilemez olduğunu unutmayın.Köşe durumlarda, en karmaşık sözcük ayırıcısı düzgün başka bir dilde yazılmış metni işlenemiyor olabilir.

Olmayan Batı dilleri

(Örneğin, Çince, Japonca, Hinduca ve benzeri) olmayan Batı dilleri için yukarıdaki çözüm mutlaka, dilbilimsel nedeniyle çalışmıyor.Olmayan Batı dilleri için aşağıdaki geçici çözümlerden birini deneyin:

  • Farklı aileleri için dillerden

    Bir sütun, ispanyolca ve Japonca olarak önemli ölçüde farklı diller içerme olasılığı varsa, ayrı sütunlarda farklı bir dil içeriğini saklamak göz önünde bulundurun.Bu dile özgü sözcük ayırıcı her sütun için kullanmanıza izin.Bu çözüm seçin ve sorguyu saat sorgu dili bilmiyorsanız, sorguyu Sorgu doğru satır veya belge bulur emin olmak için her iki sütun karşı sorun gerekebilir.

  • Ikili içeriğini (örneğin, Microsoft Word belgeleri)

    Dizin oluşturulmuş içerik olduğunda binary türü, sözcük ayırıcısı için göndermeden önce metin içeriği işleyen tam metin araması süzgeci, belirli bir dil etiketleri ikili dosya içinde varolan oluşuyor. Bu durum, dizin oluşturma saat, süzgeç için bir belge veya bir belgenin bir kısmını sağ LCID göster.Tam metin alt yapısı ile bu LCID bu dil için sözcük ayırıcı sonra çağırır.Ancak, birden çok dil içerik dizinleme sonra içeriği doğru dizine doğrulamanız önerilir.

  • Düz metin içeriği

    Içeriğinizi düz metin, kendisine dönüştürebilirsiniz xml verileri yazın ve her bir belirli bir belge veya belgenin bir bölümüne karşılık gelen dili belirten dil etiketler ekleyin. Bunun için ancak, dil, tam metin dizinlemesi önce bilmeniz gerekir.

Dallanma

Sütun düzeyinde dilinizi seçerken ek bir dikkate dallanma.Dallanma tam metin sorguları, belirli bir dilde bir sözcüğün tüm stemmed (inflectional) Form arama işlemidir.Birden çok dil işlemek için bir genel sözcük ayırıcısı kullandığınızda, yalnızca değil sütundaki diğer diller için sütun için belirtilen dil için stemming işlem çalışır.Örneğin, Almanca sözcük köklerini ingilizce veya ispanyolca (vb.) çalışmaz.Bu, hangi dili seçtiğiniz sorgu saat kendi geri çağırma bağlı etkileyebilir.

Veri depolama yöntem tam metin araması etkisini

Dil seçimi, başka bir dikkat etmeniz gereken veriler nasıl gösterilir için ilişkilidir.Içinde depolanan verileri varbinary(max) sütun, yok bir özel süzme işlemi gerçekleştirilir. Bunun yerine metin sözcük bölme bileşeni olarak aracılığıyla genellikle geçirilen - olduğu.

Ayrıca, sözcük ayırıcılarını, çoğunlukla yazılı metni işlemek için tasarlanmıştır.Üzerinde metin (HTML gibi) Biçimleme her türlü varsa, bu nedenle, çok dile ait doğruluk dizin oluşturma ve arama sırasında alamayabilirsiniz.Bu durumda, iki seçeneğiniz vardır — yalnızca metin verileri depolamak için bu yöntem tercih edilir varbinary(max) sütun ve, süzülmüş; bu nedenle, belge türünü gösterir. Bu, bir seçenek değilse, nötr bir sözcük ayırıcısı kullanarak düşünebilirsiniz ve, olanaklıysa, biçimlendirme veri (ö rne 'HTML ' br) için bir etkisiz sözcük ekleyerek listeler.

Not

Nötr dilini belirlediğinizde temel dili dallanma yürütme birlikte verilmez değil.

Tam metinli bir sorguda sütun düzey varsayılan dışındaki bir dil belirtme

Varsayılan olarak, SQL Server 2008, tam metin araması tam metin yan tümcesinde bulunan her sütun için belirtilen dil kullanarak sorgu terimleri ayrıştırmaz. Bu davranışı geçersiz kılmak için , sorgu saat varsayılan bir dil belirtin.Yüklü olan kaynaklar, desteklenen diller için dil language_term ın yan tümce bir İÇERİR, containstable, freetext, or freetexttable sorgu sözcüğü bölme dallanma, eşanlamlılar sözlüğü ve stopword işleme sorgu terimlerinin için kullanılan dili belirlemek için kullanılır.

Dil desteği

Bu bölümde, sözcük ayırıcılarını ve sözcük köklerini giriş sağlar ve anlatılır nasıl, sütun düzey dilin LCID tam metin aramasını kullanır.

Sözcük ayırıcılarını ve sözcük köklerini Giriº

SQL Server 2008 sözcük ayırıcılarını ve sözcük olanlar bulunan daha önce daha önemli ölçüde daha iyi olan köklerini tam bir yeni ailesi içerir. SQL Server.

Not

Microsoft doğal dil grubunun (MS NLG) uygulanan ve bu yeni dil Bileşenleri'ni destekler.

Yeni sözcük ayırıcılarını aşağıdaki yararları sağlar:

  • Sağlamlık

    Sınama yeni sözcük ayırıcılarını high-pressure sorgu ortamlarda sağlam olduğunu göstermiştir.

  • Güvenlik

    Yeni sözcük ayırıcılarını, varsayılan olarak etkin SQL Server 2008 güvenlik geliştirmeleri sayesinde dilbilimsel bileşenleri. Genel güvenlik ve sağlamlık açısından, artırmak için sözcük ayırıcılarını ve filtreler gibi dış bileşenlere imzalanmasını önerilir SQL Server. Bu bileşenler aşağıdaki şekilde olarak imzalandığını doğrulamak için tam metin yapılandırabilirsiniz:

    EXEC sp_fulltext_service 'verify_signature';
    
  • Kalite

    Word ayırıcılarını yeniden tasarlandı ve sınama yeni sözcük ayırıcılarını daha iyi, daha önceki sözcük ayırıcılarını anlambilim kalite sağlamanızı göstermiştir.Bunun için geri çekme doğruluğunu artırır. SQL Server 2008 Users (Kullanıcılar).

  • Karşılama

    dilleri büyük bir listesi için sözcük ayırıcılarını yer SQL Server 2008 kutuyu dışarı ve varsayılan olarak etkinleştirilmiştir.

Hangi dillerde listesi için SQL Server 2008 bir sözcük ayırıcısı ve sözcük köklerini, bkz: sys.fulltext_languages (Transact-SQL).

Üçüncü taraf sözcük ayırıcılarını

Birden fazla dış, üçüncü taraf sözcük ayırıcılarını yüklenebilir. SQL Server 2008. Bu sözcük ayırıcılarını el ile kaydedebilirsiniz.Daha fazla bilgi için bkz:Nasıl Yapılır: Lisanslı bir üçüncü taraf sözcük ayırıcılarını yüklenemedi..

Sonra dış (üçüncü taraf) sözcük yüklenemedi yürüterek, tam metin desteklenen diller listesini yenilemek gereken ayırıcılarını, sp_fulltext_service belirtme sistem saklı yordamıupdate_languages seçenek, aşağıdaki gibi:

EXEC sp_fulltext_service 'update_languages';

Daha sonra yeni yüklenen bir sözcük ayırıcılarını diller tarafından listelenecektir sys.fulltext_languages kataloğunu görüntüleyin.

tam metin araması, sütun düzey dilin adını nasıl kullanır

Bir tam metin dizini oluştururken, her sütun için bir geçerli dil adı belirtmeniz gerekir.Geçerli, ancak tarafından döndürülen bir dil adı ise, sys.fulltext_languages (Transact-SQL) Katalog görünümü, tam metin araması geri varsa en yakın kullanılabilir dil adı olarak aynı dil ailesi döner. Aksi durumda, tam metin araması etkisiz sözcük ayırıcısı için geri döner.Bu Sonbahar geri davranışı geri çağırma doğruluğunu etkileyebilir.Bu nedenle bir tam metin dizini oluştururken, her sütun için bir dil, geçerli ve kullanılabilir ad belirtmeniz önerilir.

Not

LCID karşı tam-(gibi metin için uygun olan tüm veri türleri kullanılır char veya nchar). sıralama düzeni düzenini varsa bir char, varchar, veya text Tür sütunu küme bir dil küme ting için LCID tarafından tanımlanan dilden farklı, LCID yine de tam dizin oluşturuluyor ve bu sütunlar sorgulama metin sırasında kullanılır.