Aracılığıyla paylaş


Tam metin dizini oluşturma, bir dil seçme en iyi yöntemler

Tam metin dizini oluştururken, dizin oluşturulmuş sütun için bir sütun düzey dil belirtmeniz gerekir.The word breaker and stemmers of the specified language will be used by full-text queries on the column.Birkaç sütun dil tam metin dizini oluştururken seçilirken dikkat edilmesi gereken noktalar vardır.Bu noktalar arasında ilişki nasıl metninizi tokenized için ve tam-metin arama motoru tarafından dizine alınmış.

Not

Bir sütun düzey dil için bir sütun tam metin dizini belirtmek için dil kullanmak language_term yan tümce tümce tümce olduğunda belirterek sütun.Daha fazla bilgi için bkz: Full-Text Index (Transact-sql) oluştur ve Full-Text Index (Transact-sql) Değiştir.

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

Sözcük ayırıcısı, dile olan sözcük sınırlarına, dizini Oluşturulmakta olan metin tokenizes.Bu nedenle, sözcük bölme davranış farklı diller arasında farklılık gösterir.Bir dil kullanıyorsanız, belirli diller dizini oluşturmak için x, {x, y ve z}, bazı davranışlarını neden olabilecek beklenmeyen sonuçlar.Örneğin, bir tire (-) veya virgül (,) bir dil ancak başka atılmak bir sözcük sonu öğesi olabilir.Belirli bir sözcüğün farklı farklı dilde nedeniyle çünkü aynı zamanda stemming nadiren beklenmeyen davranış ortaya çıkabilir.Örneğin, İngilizce dilinde sözcük genellikle beyaz boşluk veya noktalama çeşit sınırlarıdır.Diğer dillerde olduğu gibi Almanca, sözcük ve karakterleri birbirine yeniden birleştirilebilir.Bu nedenle, seçtiğiniz sütun düzey dil sütunun satır içinde saklanan beklediğiniz dili temsil etmelidir.

Batı dilleri

Batı dilleri hangi diller içinde saklanan kullanacağınızdan emin değilseniz, ailesi için bir sütun ya da birden fazla depolanması için beklediğiniz, genel bir çözüm içinde depolanmış olabilir en karmaşık dil için sözcük ayırıcı kullanmak için sütun.İçin örnek, İngilizce, İspanyolca ve Almanca içeriği tek bir sütunda depolamak bekleyebilirsiniz.Bu üç Batı dilleri çok sözcük bölme geriye, en karmaşık olan Alman desenlerle sahiptir.Bu nedenle, iyi bir seçim, durum İngilizce ve İspanyolca metin doğru olarak işlemek görebilmeniz gerekir hangi Almanca sözcük ayırıcı kullanmak olacaktır.Buna karşılık, İngilizce sözcük ayırıcısı Almanca metin mükemmel Almanca, bileşik sözcükler nedeniyle işleme.

Bir dil ailesi en karmaşık dil, sözcük ayırıcısı kullanarak her dil ailesindeki kusursuz dizin oluşturma garanti etmez olduğunu unutmayın.Köşe durumlar içinde en karmaşık sözcük ayırıcısı düzgün başka bir dilde yazılmış metni işleyemez bulunmuyor olabilir.

Olmayan Batı dilleri

(Örneğin, Çince, Japonca, Hintçe ve diğerleri) olmayan Batı dilleri için yukarıdaki çözüm mutlaka, dile ait nedenlerle çalışmaz.Olmayan Batı dilleri için aşağıdaki geçici çözümlerden birini deneyin:

  • Farklı aileleri için dillerden

    Önemli ölçüde farklı dillerde, İspanyolca ve Japonca bir sütun içerebilir, ayrı sütunlarda farklı dilde içeriğinin depolanması düşünün.Bu, her sütun için dile özgü sözcük ayırıcı kullanmak izin.Bu çözümü seçtiğiniz ve sorgu saat sorgu dili bilmiyorsanız, sorguyu sorgu sağ satırı veya belgeyi bulur sağlamak için her iki sütun karşı vermek gerekebilir.

  • İkili içeriği (örneğin, Microsoft Word belgeleri)

    Dizin oluşturulmuş içerik olduğunda binary türü, önce sözcük ayırıcısı için gönderme düzenleyeni belirli bir dil metinsel içerik işler tam metin araması filtresi etiketleri varolan içinde ikili dosya.Bu durum, dizin oluşturma saat filtre sağ LCID belge veya belgenin bir bölümü için Yayımla.Tam-metin arama motoru ile bu LCID dilin sözcük ayırıcı sonra çağıracaktır.Ancak, çoklu dil içerik dizinleme sonra içeriği düzgün bir şekilde dizine emin olun öneririz.

  • Düz metin içeriği

    İçeriğinizi düz metin olduğunda ona dönüştürebilirsiniz xml verileri yazın ve karşılık gelen her belirli belge veya dil göstermek dil etiketleri eklemebelge bölüm. Bunu çalışması için ancak, tam metin dizinlemeyi önce dil bilmek gerekir.

Dallanma

Kendi sütun - seçerken bir sağlayabildiğidüzey dil dallanma.Dallanma tüm () deyimlerin belirli bir dilde sözcük stemmed için tam metin sorguları, arama işlemidir.Birçok dil işlemek için genel sözcük ayırıcısı kullandığınızda, yalnızca diğer dillerde sütun için sütun için belirtilen dil stemming işlemi çalışır.Örneğin, Almanca sözcük köklerini İngilizce veya İspanyolca için (ve benzeri) çalışmaz.Bağlı, geri çekme sorgu saat seçtiğiniz hangi dili olarak etkileyebilir.

Veri depolama yöntemi üzerinde tam metin arama etkisini

Başka bir düşünce, dil seçimi, verilerin gösterilmesi için ilişkilidir.İçinde depolanan veriler için varbinary(max) sütun, özel filtre yok gerçekleştirilir.Bunun yerine, metin genellikle sözcük bölme bileşeni olarak sağlanır-olur.

Ayrıca, sözcük ayırıcılarını, esas olarak yazılı metni işlemek için tasarlanmıştır.Metninizi üzerinde her türlü işaretleme (html gibi) varsa, bu nedenle, mükemmel dilbilimsel doğruluğu dizin oluşturma ve arama sırasında alamayabilirsiniz.durum, İki seçeneğiniz vardır — metin veri depolamak için tercih edilen yöntem basitçe olan varbinary(max) sütun ve filtre uygulanmış böylece belgenin türü belirtmek için.Bu bir seçenek değilse, nötr sözcük ayırıcısı kullanarak ve mümkünse, biçimlendirme veri (örneğin, 'br' eklemeyi düşünebilirsiniz HTML) için kendi etkisiz sözcük listeler.

Not

Nötr dil belirttiğinizde dayanan dil dallanma oyuna dönmüyor.

Tam metin sorgu içinde sütun düzeyi varsayılan olmayan bir dil belirtme

Varsayılan olarak, SQL Server 2008, tam metin araması sorgu terimleri kullanarak tam metin yan tümce tümce. dahil her sütun için belirtilen dil parseBu davranışı geçersiz kılmak için sorgu saat varsayılan olmayan bir dil belirtin.Desteklenen diller Dil kaynakları yüklenir, language_term yan tümce tümce tümce, bir içerir, CONTAINSTABLE, freetext, veya freetexttable sorgu sözcük bölme, dallanma, eş anlamlılar ve stopword işleme sorgu terim için kullanılan dili belirlemek için kullanılabilir.

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ılmaktadır nasıl tam metin araması sütun düzey dil LCID kullanır.

Sözcük ayırıcılarını ve sözcük köklerini giriş

SQL Server 2008sözcük ayırıcıları ve sözcük olandan daha önce bulunan önemli ölçüde daha iyi olan, tam bir yeni ailesi üyeleri SQL Server.

Not

Microsoft Doğal dil grubu (ms nlg) uygulanan ve bu yeni dile ait bileşenleri 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 etkinleştirilmiş olan SQL Server 2008 sayesinde için güvenlik yenilikleri dile ait bileşenleri.Genel güvenlik ve sağlamlığı artırmak için sözcük ayırıcılarını ve filtreleri gibi harici bileşenler imzalanmasını öneririz SQL Server.Bu bileşenler aşağıdaki şekilde imzalandığını doğrulamak için tam metin yapılandırabilirsiniz:

    EXEC sp_fulltext_service 'verify_signature';
    
  • Kalite

    Sözcük ayırıcılarını yeniden tasarlanmış ve test yeni sözcük ayırıcılarını daha önceki sözcük ayırıcılarını anlamsal kalitesi daha iyi sağlamak göstermiştir.Bunun için geri çekme doğruluğu artırır SQL Server 2008 kullanıcılar.

  • Karşılama

    sözcük ayırıcılarını diller geniş bir listesi için dahil edilen SQL Server 2008 kutuyu dışarı ve varsayılan olarak etkindir.

Hangi dillerin listesi için SQL Server 2008 içeren 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ı

Birçok harici, üçüncü taraf sözcük ayırıcılarını kullanılabilir SQL Server 2008.Bu sözcük ayırıcıları el ile kaydedebilirsiniz.Daha fazla bilgi için bkz: Nasıl yapılır: Lisanslı üçüncü taraf sözcük ayırıcılarını yükle.

Harici (üçüncü taraf) sözcüğü yükleme sonra ayırıcıları, yürüterek tam metin desteklenen diller listesini yenilemek için gereksinim duyduğunuz sp_fulltext_service sistem saklı yordamı belirterek update_languages seçeneği, aşağıdaki gibi:

EXEC sp_fulltext_service 'update_languages';

Daha sonra yeni yüklenen sözcük ayırıcılarını diller tarafından listelenip sys.fulltext_languages Katalog görünümü.

Tam metin arama sütun düzeyi dilin adını nasıl kullanır

Tam metin dizini oluştururken, her sütun için bir geçerli dil adı belirtmeniz gerekir.Dil adı geçerli, ancak tarafından döndürülen olup olmadığını sys.fulltext_languages (Transact-sql) Katalog görünümü, tam metin araması denk geri aynı dil ailesi, en yakın kullanılabilir dil adı varsa.Aksi takdirde, tam metin araması için nötr sözcük ayırıcısı geri döner.Geri çekme doğruluğu bu Sonbahar geri davranışı etkileyebilir.Bu nedenle bir geçerli ve kullanılabilir dil adı her sütun için tam metin dizini oluştururken belirtmeniz önerilir.

Not

Tam metin dizinlemesi için uygun olan tüm veri türlerine karşı kullanılan LCID (gibi char veya nchar).Sıralama düzeni varsa, bir char, varchar, veya text sütun küme yazın ayarı LCID tarafından tanımlanan dilden farklı bir dil LCID tam dizin oluşturma ve sorgulama bu sütunları. metin sırasında yine de kullanılan