sys.dm_fts_parser (T-SQL)

Berlaku untuk:SQL Server

Mengembalikan hasil tokenisasi akhir setelah menerapkan pemecah kata, thesaurus, dan kombinasi daftar henti tertentu ke input string kueri. Hasil tokenisasi setara dengan output Mesin Teks Lengkap untuk string kueri yang ditentukan.

sys.dm_fts_parser adalah fungsi manajemen dinamis.

Sintaks

sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )

Argumen

query_string

Kueri yang ingin Anda uraikan. query_string bisa menjadi rantai string yang didukung sintaksIS CONTAINS. Misalnya, Anda dapat menyertakan formulir infleksi, tesaurus, dan operator logis.

Icid

Pengidentifikasi lokal (LCID) pemecah kata yang akan digunakan untuk mengurai query_string.

stoplist_id

ID daftar henti, jika ada, yang akan digunakan oleh pemecah kata yang diidentifikasi oleh lcid. stoplist_id int. Jika Anda menentukan 'NULL', tidak ada daftar henti yang digunakan. Jika Anda menentukan 0, STOPLIST sistem digunakan.

ID daftar henti unik dalam database. Untuk mendapatkan ID daftar henti untuk indeks teks lengkap pada tabel tertentu, gunakan tampilan katalog sys.fulltext_indexes .

accent_sensitivity

Nilai Boolean yang mengontrol apakah pencarian teks lengkap sensitif atau tidak peka terhadap diakritik. accent_sensitivity adalah bit, dengan salah satu nilai berikut:

Nilai Sensitivitas aksen adalah...
0 Sensitif

Kata-kata seperti "café" dan "café" diperlakukan identik.
1 Sensitif

Kata-kata seperti "café" dan "café" diperlakukan berbeda.

Catatan

Untuk melihat pengaturan nilai ini saat ini untuk katalog teks lengkap, jalankan pernyataan Transact-SQL berikut: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.

Tabel dikembalikan

Nama kolom Jenis data Deskripsi
kata kunci varbinary(128) Representasi heksadesimal dari kata kunci tertentu yang dikembalikan oleh pemecah kata. Representasi ini digunakan untuk menyimpan kata kunci dalam indeks teks lengkap. Nilai ini tidak dapat dibaca manusia, tetapi berguna untuk menghubungkan kata kunci tertentu untuk output yang dikembalikan oleh tampilan manajemen dinamis lainnya yang mengembalikan konten indeks teks lengkap, seperti sys.dm_fts_index_keywords dan sys.dm_fts_index_keywords_by_document.

Catatan:0xFF mewakili karakter khusus yang menunjukkan akhir file atau himpunan data.
group_id int Berisi nilai bilangan bulat yang berguna untuk membedakan grup logis tempat istilah tertentu dihasilkan. Misalnya, 'Server AND DB OR FORMSOF(THESAURUS, DB)"' menghasilkan nilai group_id berikut dalam bahasa Inggris:

1: Server
2: DB
3: DB
phrase_id int Berisi nilai bilangan bulat yang berguna untuk membedakan kasus di mana bentuk alternatif kata majemuk, seperti teks lengkap, dikeluarkan oleh pemecah kata. Terkadang, dengan adanya kata majemuk ('multi-juta'), bentuk alternatif dikeluarkan oleh pemecah kata. Bentuk alternatif (frasa) ini terkadang perlu dibingkai.

Misalnya, 'multi-million' menghasilkan nilai phrase_id berikut dalam bahasa Inggris:

1 untuk multi
1 untuk million
2 untuk multimillion
kemunculan int Menunjukkan urutan setiap istilah dalam hasil penguraian. Misalnya, untuk frasa "SQL Server query processor" kemunculan akan berisi nilai kemunculan berikut untuk istilah dalam frasa, dalam bahasa Inggris:

1 untuk SQL
2 untuk Server
3 untuk query
4 untuk processor
special_term nvarchar(4000) Berisi informasi tentang karakteristik istilah yang dikeluarkan oleh pemecah kata, salah satu dari:

- Kecocokan persis
- Kata kebisingan
- Akhir Kalimat
- Akhir paragraf
- Akhir Bab
display_term nvarchar(4000) Berisi bentuk kata kunci yang dapat dibaca manusia. Seperti halnya fungsi yang dirancang untuk mengakses konten indeks teks lengkap, istilah yang ditampilkan ini mungkin tidak identik dengan istilah asli karena batasan denormalisasi. Namun, seharusnya cukup tepat untuk membantu Anda mengidentifikasinya dari input asli.
expansion_type int Berisi informasi tentang sifat perluasan istilah tertentu, salah satu dari:

0 = Kasus kata tunggal
2 = Ekspansi infleksi
4 = Ekspansi/penggantian Thesaurus

Misalnya, pertimbangkan kasus di mana tesaurus mendefinisikan eksekusi sebagai perluasan dari jog:

<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>

Istilah FORMSOF (FREETEXT, run) ini menghasilkan output berikut:

run dengan expansion_type = 0
runs dengan expansion_type = 2
running dengan expansion_type = 2
ran dengan expansion_type = 2
jog dengan expansion_type = 4
source_term nvarchar(4000) Istilah atau frasa tempat istilah tertentu dihasilkan atau diurai. Misalnya, kueri tentang '"word breakers" AND stemmers' menghasilkan nilai source_term berikut dalam bahasa Inggris:

word breakersuntuk display_termword
word breakersuntuk display_termbreakers
stemmersuntuk display_termstemmers

Keterangan

sys.dm_fts_parsermendukung sintaksis dan fitur predikat teks lengkap, seperti CONTAINS dan FREETEXT, dan fungsi, seperti CONTAINSTABLE dan FREETEXTTABLE.

Menggunakan Unicode untuk mengurai karakter khusus

Saat Anda mengurai string kueri, sys.dm_fts_parser gunakan kolase database tempat Anda tersambung, kecuali Anda menentukan string kueri sebagai Unicode. Oleh karena itu, untuk string non-Unicode yang berisi karakter khusus, seperti ü atau ç, output mungkin tidak terduga, tergantung pada kolase database. Untuk memproses string kueri secara independen dari kolase database, awali string dengan N, yaitu, N'query_string'.

Untuk informasi selengkapnya, lihat C. Menampilkan output string yang berisi karakter khusus nanti di artikel ini.

Kapan menggunakan sys.dm_fts_parser

sys.dm_fts_parser dapat sangat kuat untuk tujuan penelusuran kesalahan. Beberapa skenario penggunaan utama meliputi:

  • Untuk memahami bagaimana pemecah kata tertentu memperlakukan input tertentu

    Saat kueri mengembalikan hasil yang tidak terduga, kemungkinan penyebabnya adalah cara pemecah kata mengurai dan memecah data. Dengan menggunakan sys.dm_fts_parser, Anda menemukan hasil yang diteruskan pemecah kata ke indeks teks lengkap. Selain itu, Anda dapat melihat istilah mana yang merupakan stopword, yang tidak dicari dalam indeks teks lengkap. Apakah istilah adalah stopword untuk bahasa tertentu bergantung pada apakah istilah tersebut ada dalam daftar henti yang ditentukan oleh nilai stoplist_id yang dideklarasikan dalam fungsi.

    Bendera sensitivitas aksen memungkinkan Anda melihat bagaimana pemecah kata mengurai input, mengingat informasi sensitivitas aksennya.

  • Untuk memahami cara kerja stemmer pada input tertentu

    Anda dapat mengetahui bagaimana pemecah kata dan pemecah kata mengurai istilah kueri dan bentuk stemming-nya, dengan menentukan kueri CONTAINS atau CONTAINSTABLE yang berisi klausul FORMSOF berikut:

    FORMSOF( INFLECTIONAL, query_term )
    

    Hasilnya memberi tahu Anda istilah apa yang diteruskan ke indeks teks lengkap.

  • Untuk memahami bagaimana tesaurus memperluas atau mengganti semua atau sebagian input

    Anda juga dapat menentukan:

    FORMSOF( THESAURUS, query_term )
    

    Hasil kueri ini memperlihatkan bagaimana pemecah kata dan tesaurus berinteraksi untuk istilah kueri. Anda dapat melihat ekspansi atau penggantian dari thesaurus dan mengidentifikasi kueri yang dihasilkan yang benar-benar dikeluarkan terhadap indeks teks lengkap.

    Jika pengguna bermasalah:

    FORMSOF( FREETEXT, query_term )
    

    Kemampuan inflectional dan Thesaurus berlangsung secara otomatis.

Selain skenario penggunaan sebelumnya, sys.dm_fts_parser dapat membantu secara signifikan memahami dan memecahkan masalah lain dengan kueri teks lengkap.

Izin

Memerlukan izin CREATE FULLTEXT CATALOG, dan hak akses ke daftar henti yang ditentukan.

Contoh

J. Menampilkan output pemecah kata tertentu untuk kata kunci atau frasa

Contoh berikut mengembalikan output dari menggunakan pemecah kata bahasa Inggris, yang LCID-nya adalah 1033, dan tidak ada daftar berhenti pada string kueri berikut:

The Microsoft business analysis

Sensitivitas aksen dinonaktifkan.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);

B. Menampilkan output pemecah kata tertentu dalam konteks pemfilteran daftar henti

Contoh berikut mengembalikan output dari menggunakan pemecah kata bahasa Inggris, yang LCID-nya adalah 1033, dan daftar henti bahasa Inggris, yang ID-nya adalah 77, pada string kueri berikut:

"The Microsoft business analysis" OR "MS revenue"

Sensitivitas aksen dinonaktifkan.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis"  OR " MS revenue" ', 1033, 77, 0);

C. Menampilkan output string yang berisi karakter khusus

Contoh berikut menggunakan Unicode untuk mengurai string Prancis berikut:

français

Contoh menentukan LCID untuk bahasa Prancis, 1036, dan ID daftar henti yang ditentukan pengguna, 5. Sensitivitas aksen diaktifkan.

SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);

Baca juga

Langkah berikutnya