Sözcük ayırıcıları ve kök bulucuları yapılandırın ve yönetin

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Sözcük ayırıcılar ve kök bulucular, tüm tam metin dizinli veriler üzerinde dil analizi gerçekleştirir. Dil analizi aşağıdaki iki şeyi yapar:

  • Sözcük sınırlarını bulma (sözcük bölme). sözcük ayırıcı, dilin sözcük kuralları temelinde sözcük sınırlarının nerede mevcut olduğunu belirleyerek sözcükleri tek tek tanımlar. Her sözcük (belirteciolarak da bilinir), boyutunu küçültmek için sıkıştırılmış bir gösterim kullanılarak tam metin dizinine eklenir.

  • Fiilleri çekimle (kök çıkarma). stemmer, söz konusu dilin kurallarına göre belirli bir sözcüğün çekim biçimlerini oluşturur (örneğin, "koşuyor", "koştu" ve "koşucu", "koşmak" sözcüğünün çeşitli biçimleridir).

Sözcük ayırıcılar ve kök bulucular dile özgüdür.

Sözcük ayırıcılar ve kök bulucular dile özeldir ve dil bilim analizi kuralları farklı dillerde farklılık gösterir. Dile özgü sözcük ayırıcılar, elde edilen terimleri bu dil için daha doğru hale getirir.

SQL Server Database Engine'in desteklediği tüm diller için sağlanan sözcük ayırıcıları ve kök bulucuları kullanmak için genellikle bir işlem yapmanız gerekmez.

  • Belirli alt dil için bir kelime ayırıcı olmadığında, ancak dil ailesi için mevcut olduğunda, ana dil kullanılır. Örneğin, Fransızca sözcük ayırıcı Fransız Kanada metnini işlemek için kullanılır.

  • Belirli bir dil için kullanılabilir sözcük ayırıcı yoksa, nötr sözcük ayırıcı kullanılır. Nötr sözcük ayırıcı ile sözcükler boşluklar ve noktalama işaretleri gibi nötr karakterlerde kırılır.

Desteklenen dillerin listesini alma

Full-Text Search tarafından desteklenen dillerin listesini görmek için aşağıdaki Transact-SQL ifadesini kullanın. Bu listedeki bir dilin varlığı, sözcük ayırıcıların dil için kaydedildiğini gösterir.

SELECT *
FROM sys.fulltext_languages;

Kayıtlı sözcük ayırıcıların listesini alma

Full-Text Arama'nın bir dil için sözcük ayırıcıları kullanması için bunların kaydedilmesi gerekir. Kayıtlı kelime kırıcılar için, ilgili dilsel kaynaklar tam metin indeksleme ve sorgulama işlemlerine de sunulur. Bu kaynaklar arasında kök kelimeler, gürültülü kelimeler (stopword) ve tezaurus dosyaları bulunur.

Kayıtlı sözcük ayırıcı bileşenlerinin listesini görmek için aşağıdaki deyimi kullanın.

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

Daha fazla bilgi için bkz. sp_help_fulltext_system_components.

Eğer bir sözcük ayırıcı eklerseniz veya kaldırırsanız

Sözcük ayırıcı ekler, kaldırır veya değiştirirseniz, tam metin dizin oluşturma ve sorgulama için desteklenen Microsoft Windows yerel ayar tanımlayıcıları (LCID) listesini yenilemeniz gerekir. Daha fazla bilgi için bkz. Filtreleri ve sözcük ayırıcıları özelleştirme.

Varsayılan tam metin dili seçeneğini ayarlama

SQL Server Kurulumu, SQL Server'ın yerelleştirilmiş bir sürümü için, uygun bir eşleşme varsa varsayılan tam metin dili seçeneğini sunucunun diline ayarlar. SQL Server'ın yerelleştirilmemiş bir sürümü için varsayılan tam metin dili seçeneği İngilizce'dir.

Tam metin dizini oluşturduğunuzda veya değiştirdiğinizde, tam metin dizinli her sütun için farklı bir dil belirtebilirsiniz. Bir sütun için dil belirtilmezse, varsayılan değer yapılandırma seçeneğinin değeridir varsayılan tam metin dili.

Not

Tek bir tam metin sorgu işlevi tümcesinde listelenen tüm sütunlar, sorguda LANGUAGE seçeneği belirtilmedikçe aynı dili kullanmalıdır. Sorgulanan tam metin dizinli sütun için kullanılan dil, tam metin sorgu koşullarının (CONTAINS ve FREETEXT) bağımsız değişkenlerinde gerçekleştirilen dil analizini ve işlevleri (CONTAINSTABLE ve FREETEXTTABLE) belirler.

Dizinlenmiş sütun için dil seçme

Tam metin indeks oluşturduğunuzda, her indekslenen sütun için bir dil belirtin. Bir sütun için dil belirtilmezse sistem varsayılan dili kullanılır. Sütunun dili, hangi sözcük ayırıcının ve kök ayırıcının bu sütunun dizinini oluşturmak için kullanılacağını belirler. Ayrıca, bu dilin eş anlamlılar sözlüğü dosyası sütundaki tam metin sorguları tarafından kullanılır.

Tam metin dizini oluşturmak için sütun dilini seçerken göz önünde bulundurmanız gereken birkaç şey vardır. Bu önemli noktalar, metninizin Full-Text Altyapısı tarafından nasıl belirteç haline getirildiği ve dizine nasıl alındığı ile ilgilidir. Daha fazla bilgi için, tam metin indeks oluştururken bir dil seç sayfasına bakınız.

Belirli sütunların sözcük ayırıcı dilini görüntülemek için aşağıdaki deyimi çalıştırın.

SELECT language_id AS 'LCID'
FROM sys.fulltext_index_columns;

Daha fazla bilgi için bkz. sys.fulltext_index_columns.

Sözcük hatalarına neden olan zaman aşımı hatalarını giderme

Bir kelime ayırma zaman aşımı hatası, çeşitli durumlarda meydana gelebilir. Bu durumlar ve her durumda yanıt verme hakkında bilgi için bkz. MSSQLSERVER_30053.

MSSQLSERVER_30053 hatası hakkında bilgi

Mülk Değer
Ürün Adı SQL Sunucusu
Olay Kimliği 30053
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad FTXT_QUERY_E_WORDBREAKINGTIMEOUT
İleti Metni Tam metin sorgu dizesi için kelime ayırma zaman aşımına uğradı. Sözcük ayırıcının tam metin sorgu dizesini işlemesi uzun sürüyorsa veya sunucuda çok sayıda sorgu çalışıyorsa bu durum oluşabilir. Sorguyu daha hafif bir yük altında yeniden çalıştırmayı deneyin.

Açıklama

Aşağıdaki durumlarda sözcük hatalarına neden olan bir zaman aşımı hatası oluşabilir:

  • Sorgu dili için sözcük ayırıcı yanlış yapılandırılmış. Örneğin, kayıt listesi ayarları yanlış.

  • Kelime ayırıcı belirli bir sorgu dizesi için düzgün çalışmıyor.

  • Sözcük ayırıcı belirli bir sorgu dizesi için çok fazla veri döndürür. Fazla veri, potansiyel bir buffer aşma saldırısı olarak ele alınır ve kelime kırma servislerini barındıran filtre daemon sürecini (fdhost.exe) kapatır.

  • Filtre daemon işlemi yapılandırması yanlış.

    En yaygın yapılandırma sorunları, parola süre sonu veya filtre daemon hesabının oturum açmasını engelleyen bir etki alanı ilkesidir.

  • Sunucu örneğinde çok ağır bir sorgu iş yükü çalışıyor. Örneğin, kelime kesici tam metin sorgu dizesini işlemesi uzun zaman aldı ya da sunucuda çok sayıda sorgu çalışıyordu. Bu en düşük olası nedendir.

Kullanıcı eylemi

Zaman aşımının olası nedenine uygun kullanıcı eylemini aşağıdaki gibi seçin:

Olası neden Kullanıcı eylemi
Sorgu dili için sözcük ayırıcı yanlış yapılandırılmış. Üçüncü taraf sözcük ayırıcı kullanıyorsanız, bu sözcük işletim sistemine yanlış kaydedilmiş olabilir. Bu durumda, sözcük ayırıcıyı yeniden kaydedin. Daha fazla bilgi için bkz. Full-Text Search tarafından kullanılan sözcük ayırıcılarını önceki sürüme döndürme.
Kelime ayırıcı belirli bir sorgu dizesi için düzgün çalışmıyor. Kelime kesici Database Engine tarafından destekleniyorsa, Microsoft Customer Service and Support ile iletişime geçin.
Sözcük ayırıcı belirli bir sorgu dizesi için çok fazla veri döndürür. Kelime kesici Database Engine tarafından destekleniyorsa, Microsoft Customer Service and Support ile iletişime geçin.
Filtre daemon işlemi yapılandırması yanlış. Geçerli parolayı kullandığınızdan ve bir etki alanı ilkesinin filtre daemon hesabının oturum açmasını engellemediğinden emin olun.
Sunucu örneğinde çok ağır bir sorgu iş yükü çalışıyor. Sorguyu daha hafif bir yük altında yeniden çalıştırmayı deneyin.

Güncelleştirilmiş sözcük ayırıcılarının etkisini anlama

Database Engine'in her sürümü, güncellenmiş dil kurallarına sahip güncellenmiş kelime kırıcıları içerebilir. Bu güncellenmiş kelime kırıcılar, önceki Database Engine sürümlerinden içe aktarılan tam metin indekslerdeki kelime kırıcılarından farklı davranabilir.

Bu, veritabanı mevcut Database Engine sürümüne yükseltildiğinde tam metin katalogun içe aktarılması durumunda önemlidir. Tam metin kataloğundaki tam metin dizinleri tarafından kullanılan bir veya daha fazla dil artık yeni sözcük ayırıcılarla ilişkilendirilebilir. Daha fazla bilgi için bkz. Yükseltme Full-Text Arama.