Mengonfigurasi dan Mengelola File Tesaurus untuk Pencarian Teks Lengkap

Berlaku untuk:SQL Server

Kueri Pencarian Teks Lengkap SQL Server dapat mencari sinonim istilah yang ditentukan pengguna melalui penggunaan tesaurus Pencarian Teks Lengkap. Setiap thesaurus mendefinisikan sekumpulan sinonim untuk bahasa tertentu. Dengan mengembangkan tesaurus yang disesuaikan dengan data teks lengkap, Anda dapat secara efektif memperluas cakupan kueri teks lengkap pada data tersebut.

Pencocokan tesaurus terjadi untuk semua kueri FREETEXT dan FREETEXTABLE dan untuk kueri CONTAINS dan CONTAINSTABLE apa pun yang menentukan FORMSOF THESAURUS klausa.

Tesaurus Pencarian Teks Lengkap adalah file teks XML.

Apa yang ada di dalam thesaurus

Sebelum kueri pencarian teks lengkap dapat mencari sinonim dalam bahasa tertentu, Anda harus menentukan pemetaan tesaurus (yaitu, sinonim) untuk bahasa tersebut. Setiap thesaurus harus dikonfigurasi secara manual untuk menentukan hal berikut:

  • Set ekspansi

    Set ekspansi berisi sekelompok sinonim seperti "penulis", "penulis", dan "jurnalis" yang diganti satu sama lain oleh kueri teks lengkap. Kueri yang berisi kecocokan untuk sinonim apa pun dalam set ekspansi diperluas untuk menyertakan setiap sinonim lainnya dalam set ekspansi.

    Untuk informasi selengkapnya, lihat Struktur XML dari Kumpulan Ekspansi nanti dalam topik ini.

  • Set pengganti

    Set pengganti berisi pola teks yang akan digantikan oleh set substitusi. Misalnya, lihat bagian Struktur XML dari Set Penggantian nanti dalam topik ini.

  • Pengaturan diakritik

    Untuk tesaurus tertentu, semua pola pencarian sensitif atau tidak peka terhadap tanda diakritik seperti tilde (~), tanda aksen akut ('), atau umlaut ( ̈) (yaitu, aksen sensitif atau aksen tidak sensitif). Misalnya, Anda menentukan pola "kafe" untuk digantikan oleh pola lain dalam kueri teks lengkap. Jika tesaurus tidak peka aksen, pencarian teks lengkap menggantikan pola "kafe" dan "kafe". Jika tesaurus peka aksen, pencarian teks lengkap hanya menggantikan pola "kafe". Secara default, tesaurus tidak peka aksen.

File thesaurus default

SQL Server menyediakan sekumpulan file thesaurus XML, satu untuk setiap bahasa yang didukung. File-file ini pada dasarnya kosong. Mereka hanya berisi struktur XML tingkat atas yang umum untuk semua tesaurus SQL Server dan tesaurus sampel yang dikomentari.

Lokasi file thesaurus

Lokasi default file thesaurus adalah:

<SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\

Lokasi default ini berisi file berikut:

  • File thesaurus khusus bahasa

    Penyetelan menginstal file thesaurus kosong di lokasi di atas. File terpisah disediakan untuk setiap bahasa yang didukung. Administrator sistem dapat menyesuaikan file-file ini.

    Nama file default file thesaurus menggunakan format berikut:

    'ts' + <three-letter language-abbreviation> + '.xml'

    Nama file thesaurus untuk bahasa tertentu ditentukan dalam registri dalam nilai berikut:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>

  • File thesaurus global

    File thesaurus global kosong, tsGlobal.xml.

Mengubah lokasi file thesaurus

Anda dapat mengubah lokasi dan nama file thesaurus dengan mengubah kunci registrinya. Untuk setiap bahasa, lokasi file thesaurus ditentukan dalam nilai berikut dalam registri:

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance name>\MSSearch\Language\<language-abbreviation>\TsaurusFile

File thesaurus global sesuai dengan bahasa Netral dengan LCID 0. Nilai ini hanya dapat diubah oleh administrator.

Cara kueri teks lengkap menggunakan tesaurus

Kueri thesaurus menggunakan thesaurus khusus bahasa dan thesaurus global.

  1. Pertama, kueri mencari file khusus bahasa dan memuatnya untuk diproses (kecuali sudah dimuat). Kueri diperluas untuk menyertakan sinonim khusus bahasa yang ditentukan oleh set ekspansi dan aturan set penggantian dalam file tesaurus.
  2. Langkah-langkah ini kemudian diulang untuk tesaurus global. Namun, jika istilah sudah menjadi bagian dari kecocokan dalam file thesaurus spesifik bahasa, istilah tersebut tidak memenuhi syarat untuk pencocokan dalam thesaurus global.

Struktur file thesaurus

Setiap file thesaurus mendefinisikan kontainer XML yang ID-nya adalah Microsoft Search Thesaurus, dan komentar, <!-- ... -->, yang berisi sampel thesaurus. Tesaurus didefinisikan dalam <thesaurus> elemen yang berisi sampel elemen anak yang menentukan pengaturan diakritik, set ekspansi, dan set pengganti.

File thesaurus kosong yang khas berisi teks XML berikut:

<XML ID="Microsoft Search Thesaurus">  
  
<!--  Commented out  
  
    <thesaurus xmlns="x-schema:tsSchema.xml">  
<diacritics_sensitive>0</diacritics_sensitive>  
        <expansion>  
            <sub>Internet Explorer</sub>  
            <sub>IE</sub>  
            <sub>IE5</sub>  
        </expansion>  
        <replacement>  
            <pat>NT5</pat>  
            <pat>W2K</pat>  
            <sub>Windows 2012</sub>  
        </replacement>  
        <expansion>  
            <sub>run</sub>  
            <sub>jog</sub>  
        </expansion>  
    </thesaurus>  
-->  
</XML>  

Struktur XML dari set ekspansi

Setiap set ekspansi diapit dalam <expansion> elemen . Dalam elemen ini, Anda menentukan satu atau beberapa <sub> substitusi dalam elemen. Dalam set ekspansi, Anda dapat menentukan sekelompok substitusi yang merupakan sinonim satu sama lain.

Misalnya, Anda dapat mengedit bagian ekspansi untuk memperlakukan pengganti "penulis", "penulis", dan "jurnalis" sebagai sinonim. kueri pencarian teks lengkap yang berisi kecocokan dalam satu substitusi diperluas untuk menyertakan semua substitusi lain yang ditentukan dalam set ekspansi. Oleh karena itu, dalam contoh sebelumnya, ketika Anda mengeluarkan FORMS OF THESAURUS atau kueri FREETEXT untuk kata "penulis", pencarian teks lengkap juga mengembalikan hasil pencarian yang berisi kata "penulis" dan "jurnalis".

Inilah tampilan bagian set ekspansi untuk contoh di atas:

<expansion>  
        <sub>writer</sub>  
        <sub>author</sub>  
        <sub>journalist</sub>  
</expansion>  

Struktur XML dari set pengganti

Setiap set pengganti diapit dalam <replacement> elemen. Dalam elemen ini Anda dapat menentukan satu atau beberapa pola dalam <pat> elemen dan nol atau lebih substitusi dalam <sub> elemen, satu per sinonim. Anda dapat menentukan pola yang akan digantikan oleh set substitusi. Pola dan substitusi dapat berisi kata, atau urutan kata. Jika tidak ada penggantian yang ditentukan untuk pola, itu memiliki efek menghapus pola dari kueri pengguna.

Misalnya, Anda ingin kueri untuk "Win8", pola, digantikan oleh "Windows Server 2012" atau "Windows 8.0", substitusi. Jika Anda menjalankan kueri teks lengkap untuk "Win8", pencarian teks lengkap hanya mengembalikan hasil pencarian yang berisi "Windows Server 2012" atau "Windows 8.0". Ini tidak mengembalikan hasil yang berisi "Win8". Ini karena pola "Win8" telah "diganti" oleh pola "Windows Server 2012" dan "Windows 8.0".

Inilah tampilan bagian set pengganti untuk contoh di atas:

<replacement>  
        <pat>Win8</pat>  
        <sub>Windows Server 2012</sub>  
        <sub>Windows 8.0</sub>  
</replacement>  

Jika Anda memiliki dua set pengganti dengan pola serupa yang dicocokkan, semakin lama keduanya diutamakan. Misalnya, jika Anda menjalankan kueri FORMS OF THESAURUS untuk "komunitas online Internet Explorer" dan Anda memiliki set pengganti berikut, set penggantian "Internet Explorer" lebih diutamakan daripada set penggantian "Internet". Oleh karena itu, kueri akan diproses sebagai "komunitas online IE" atau "komunitas online IE 9".

<replacement>  
         <pat>Internet</pat>  
         <sub>intranet</sub>  
</replacement>  

dan

<replacement>  
         <pat>Internet Explorer</pat>  
         <sub>IE</sub>  
         <sub>IE 9</sub>  
</replacement>  

Struktur XML pengaturan diakritik

Pengaturan diakritik tesaurus ditentukan dalam satu <diacritics_sensitive> elemen. Elemen ini berisi nilai bilangan bulat yang mengontrol sensitivitas aksen, sebagai berikut:

Pengaturan Diakritik Nilai XML
Aksen tidak peka 0 <diacritics_sensitive>0</diacritics_sensitive>
Aksen sensitif 1 <diacritics_sensitive>1</diacritics_sensitive>

Catatan

Pengaturan ini hanya dapat diterapkan satu kali dalam file, dan berlaku untuk semua pola pencarian dalam file. Pengaturan ini tidak dapat ditentukan untuk pola individual.

Mengedit file thesaurus

Anda dapat mengonfigurasi thesaurus untuk bahasa tertentu dengan mengedit file thesaurus-nya (file XML). Selama penyiapan, kosongkan file tesaurus yang hanya <xml> berisi kontainer dan elemen sampel <thesaurus> yang dikomentari diinstal. Agar kueri pencarian teks lengkap yang mencari sinonim berfungsi dengan baik, Anda harus membuat elemen aktual <thesaurus> yang menentukan sekumpulan sinonim. Anda dapat menentukan dua bentuk sinonim, set ekspansi, dan set penggantian.

Mengedit file thesaurus

  1. Buka file thesaurus di Notepad atau editor teks lainnya.

  2. Jika Anda mengedit file tesaurus untuk pertama kalinya, hapus baris komentar berikut di awal dan akhir file, masing-masing:

    <!--Commented out  
    -->  
    
  3. Menambahkan, memodifikasi, atau menghapus set pengganti atau set ekspansi.

  4. Simpan file dan tutup Notepad.

  5. Gunakan sp_fulltext_load_thesaurus_file untuk memuat konten file tesaurus ke tempdb, menentukan pengidentifikasi lokal (LCID) yang sesuai dengan bahasa file tesaurus. Misalnya, untuk file tesaurus bahasa Inggris, tsenu.xml, LCID yang sesuai adalah 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

Rekomendasi untuk mengedit file thesaurus

Kami menyarankan agar entri dalam file thesaurus tidak berisi karakter khusus. Ini karena pemecah kata memiliki perilaku halus sehubungan dengan karakter khusus. Jika entri tesaurus berisi karakter khusus, pemecah kata yang digunakan dalam kombinasi dengan entri tersebut dapat memiliki implikasi perilaku yang halus untuk kueri teks lengkap.

Kami menyarankan agar <sub> entri tidak berisi stopword karena stopwords dihilangkan dari indeks teks lengkap. Kueri diperluas untuk menyertakan <sub> entri dari file tesaurus, dan jika <sub> entri berisi stopword, ukuran kueri meningkat secara tidak perlu.

Pembatasan untuk mengedit file thesaurus

Pembatasan berikut berlaku untuk mengedit file thesaurus:

  • Hanya administrator sistem yang dapat memperbarui, memodifikasi, atau menghapus file thesaurus.

  • Saat mengedit file thesaurus menggunakan alat editor teks, file harus disimpan dalam format Unicode, dan Tanda Urutan Byte harus ditentukan.

  • Entri thesaurus tidak boleh kosong atau pemisah kata ke string kosong.

  • Frasa dalam file thesaurus tidak boleh lebih dari 512 karakter.

  • Thesaurus tidak boleh berisi entri duplikat di antara <sub> entri set ekspansi dan <pat> elemen set pengganti.

Lihat Juga

CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (T-SQL)
FREETEXTTABLE (Transact-SQL)
sp_fulltext_load_thesaurus_file (T-SQL)
sys.dm_fts_parser (T-SQL)