Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
XML sütunlarında, XML değerlerinin içeriğini dizinleyen ancak XML işaretlemesini yoksayan bir tam metin dizini oluşturabilirsiniz. Öğe etiketleri belirteç sınırları olarak kullanılır. Aşağıdaki öğeler dizine alınmıştır:
XML öğelerinin içeriği.
Bu değerler sayısal değerler olmadığı sürece yalnızca en üst düzey öğenin XML özniteliklerinin içeriği.
Mümkün olduğunda, tam metin aramasını XML diziniyle aşağıdaki şekilde birleştirebilirsiniz:
İlk olarak, SQL tam metin aramasını kullanarak ilgi çekici XML değerlerini filtreleyin.
Ardından, XML sütununda XML dizini kullanan XML değerlerini sorgula.
Örnek: Tam metin aramasını XML sorgulama ile birleştirme
XML sütununda tam metin dizini oluşturulduktan sonra, aşağıdaki sorgu bir XML değerinin kitabın başlığında "özel" sözcüğünü içerdiğini denetler:
SELECT *
FROM T
WHERE CONTAINS(xCol,'custom')
AND xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;
contains() yöntemi, belgenin herhangi bir yerinde "özel" sözcüğünü içeren XML değerlerini alt kümeye almak için tam metin dizinini kullanır.
exist() yan tümcesi, "özel" sözcüğünün bir kitabın başlığında olmasını sağlar.
contains() ve XQuery contains() kullanan tam metin araması farklı semantiklere sahiptir. İkincisi bir alt dize eşleşmesi, diğeri ise kök oluşturma kullanan bir belirteç eşleşmesi. Bu nedenle, arama başlığında "run" bulunan dize içinse, hem tam metin contains() hem de XQuery contains() karşılandığından eşleşmeler "run", "runs" ve "running" ifadelerini içerir. Ancak sorgu, başlıktaki "özelleştirilebilir" sözcüğü ile eşleşmediğinden, tam metin contains() başarısız oluyor, ancak XQuery contains() karşılanıyor. Genel olarak, saf alt dize eşleşmesi için tam metin contains() ibaresi kaldırılmalıdır.
Ayrıca, tam metin araması kök bulma kullanır, ancak XQuery contains() birebir eşleşmedir. Bu fark bir sonraki örnekte gösterilmiştir.
Örnek: Kök bulma kullanarak XML değerleri üzerinde tam metin araması
Önceki örnekte gerçekleştirilen XQuery contains() denetimi genellikle ortadan kaldırılamaz. Şu sorguyu göz önünde bulundurun:
SELECT *
FROM T
WHERE CONTAINS(xCol,'run');
Belgedeki "koştu" sözcüğü, köklerine ayırma dolayısıyla arama koşuluna uygundur. Ayrıca, arama bağlamı XQuery kullanılarak denetlenmiyor.
XML, dizine alınmış tam metinli AXSD kullanılarak ilişkisel sütunlara ayrıştırıldığında, XML görünümü üzerinden gerçekleşen XPath sorguları temel alınan tablolarda tam metin araması gerçekleştirmez.