Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Anda bisa membuat indeks teks lengkap pada kolom XML yang mengindeks konten nilai XML, tetapi mengabaikan markup XML. Tag elemen digunakan sebagai batas token. Item berikut diindeks:
Isi elemen XML.
Konten atribut XML dari elemen tingkat atas saja, kecuali nilai tersebut adalah nilai numerik.
Jika memungkinkan, Anda dapat menggabungkan pencarian teks lengkap dengan indeks XML dengan cara berikut:
Pertama, filter nilai XML yang menarik dengan menggunakan pencarian teks lengkap SQL.
Selanjutnya, kueri nilai XML yang menggunakan indeks XML pada kolom XML.
Contoh: Menggabungkan pencarian teks lengkap dengan kueri XML
Setelah indeks teks lengkap dibuat pada kolom XML, kueri berikut memeriksa bahwa nilai XML berisi kata "kustom" dalam judul buku:
SELECT *
FROM T
WHERE CONTAINS(xCol,'custom')
AND xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;
Metode ini contains() menggunakan indeks teks lengkap untuk subset nilai XML yang berisi kata "kustom" di mana saja dalam dokumen. Klausa exist() memastikan bahwa kata "kustom" terjadi dalam judul buku.
Pencarian teks lengkap yang menggunakan contains() dan XQuery contains() memiliki semantik yang berbeda. Yang terakhir adalah pencocokan substring dan yang pertama adalah pencocokan token yang menggunakan teknik stemming. Oleh karena itu, jika pencarian adalah untuk string yang memiliki kata "run" dalam judul, hasil yang cocok akan mencakup "run", "runs", dan "running", karena baik teks lengkap contains() maupun XQuery contains() terpenuhi. Namun, kueri tidak cocok dengan kata "dapat disesuaikan" dalam judul karena teks lengkap contains() tidak sesuai, tetapi XQuery contains() terpenuhi. Umumnya, untuk kecocokan substring murni, klausa teks contains() lengkap harus dihapus.
Selain itu, pencarian teks lengkap menggunakan stemming kata, tetapi XQuery contains() adalah kecocokan harfiah. Perbedaan ini diilustrasikan dalam contoh berikutnya.
Contoh: Pencarian teks lengkap pada nilai XML menggunakan stemming
Pemeriksaan XQuery contains() yang dilakukan dalam contoh sebelumnya umumnya tidak dapat dihilangkan. Pertimbangkan kueri ini:
SELECT *
FROM T
WHERE CONTAINS(xCol,'run');
Kata "berjalan" dalam dokumen cocok dengan kondisi pencarian karena stemming. Selain itu, konteks pencarian tidak diperiksa dengan menggunakan XQuery.
Saat XML diurai ke dalam kolom relasional dengan menggunakan AXSD yang diindeks teks lengkap, kueri XPath yang terjadi pada tampilan XML tidak melakukan pencarian teks lengkap pada tabel yang mendasarinya.