Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menggunakan Pencarian Semantik di SQL Server

Artikel ini membahas dasar-dasar Penelusuran Semantik, termasuk panduan lengkap Penelusuran Semantik:mulai dari awal dan diakhiri dengan fitur siap pakai.

Selain itu, pembaca akan belajar tentang beberapa fitur Pencarian yang sangat berguna tetapi tidak diketahui secara umum yang tersedia di SQL Server seperti Pencarian Semantik, yang akan kami tunjukkan dengan beberapa contoh dasar.

Artikel ini juga menekankan pentingnya Pencarian Semantik untuk bentuk analisis tertentu yang tidak dapat dilakukan dengan pencarian biasa.

Apa itu Pencarian Semantik

Pertama-tama mari kita cari tahu apa sebenarnya Pencarian Semantik dan apa perbedaannya dengan Pencarian Teks Lengkap.

Definisi Microsoft

Menurut dokumentasi Microsoft, Pencarian Semantik memberikan wawasan mendalam tentang dokumen tidak terstruktur.

Definisi Alternatif

Pencarian Semantik adalah teknologi atau fitur pencarian khusus yang digunakan untuk melakukan pencarian komprehensif atau analisis komparatif terutama pada data atau dokumen tidak terstruktur, seperti dokumen MS Word, asalkan data tidak terstruktur tersebut disimpan di dalam database SQL Server.

Kompatibilitas

Pencarian Semantik hanya kompatibel dengan SQL Server 2012 dan versi yang lebih baru.

Harap diingat bahwa Pencarian Semantik tidak kompatibel dengan database Azure SQL atau solusi cloud gudang data Azure.

Ini berarti Anda harus bekerja dengan VM di Azure atau di instance SQL Server lokal untuk memanfaatkan fitur canggih ini.

Penelusuran Semantik vs Penelusuran Teks Lengkap

Menurut dokumentasi Microsoft, Pencarian Teks Lengkap memungkinkan Anda menanyakan kata-kata dalam dokumen; pencarian semantik memungkinkan Anda menanyakan arti dokumen.
Pencarian Semantik bersama dengan Pencarian Teks Lengkap mewakili satu fitur gabungan yang ditawarkan oleh Microsoft SQL Server, dan Anda dapat memilih untuk menginstalnya selama penginstalan instans SQL Server Anda atau nanti, dengan menambahkan fitur baru ke instans SQL yang ada.

Prasyarat

Mari kita lihat prasyarat untuk penggunaan umum Pencarian Semantik bersama dengan beberapa hal yang diperlukan untuk mengikuti panduan dalam artikel ini.

Pencarian Teks Lengkap terpasang

Anda wajib mengetahui cara menyiapkan Pencarian Teks Lengkap karena Pencarian Teks Lengkap dan Pencarian Semantik keduanya ditawarkan sebagai fitur bersama.

Silakan merujuk ke artikel Menerapkan Pencarian Teks Lengkap di SQL Server 2016 bagi pemula untuk menyiapkan Pencarian Teks Lengkap, yang merupakan prasyarat untuk menginstal Pencarian Semantik di SQL Server.

Artikel ini mengharapkan Anda untuk menginstal Pencarian Teks Lengkap pada contoh SQL Server Anda.

dbForge Studio untuk SQL Server

Penggunaan Pencarian Semantik (dalam panduan artikel ini) memerlukan data tidak terstruktur untuk disimpan dalam database SQL Server, dan dalam artikel ini, kami melakukannya menggunakan dbForge Studio untuk SQL Server daripada menyimpan data tidak terstruktur secara langsung di SQL Server.

SQL Server 2016

Kami menggunakan SQL Server 2016 dalam artikel ini, tetapi langkah-langkahnya harus hampir sama untuk versi lain yang kompatibel.

Menyiapkan Pencarian Semantik

Untuk menggunakan Pencarian Semantik atau Pencarian Semantik Statistik, Anda dapat menginstalnya selama instalasi Pencarian Teks Lengkap atau setelahnya, dengan menambahkan Pencarian Teks Lengkap &Pencarian Semantik sebagai fitur baru.

Cek Penelusuran Teks Lengkap

Silakan periksa status instalasi Pencarian Teks Lengkap dan Pencarian Semantik dengan menjalankan skrip berikut pada database master:

-- Full-Text Search and Semantic Search status
SELECT SERVERPROPERTY('IsFullTextInstalled') as [Full-Text-Search-and-Semantic-Search-Installed];  
GO

Jika outputnya 1, maka Anda baik-baik saja, tetapi jika 0, silakan merujuk ke artikel yang disebutkan di atas untuk menginstal fitur Pencarian Teks Lengkap dan Pencarian Semantik menggunakan pengaturan SQL Server.

Instal Basis Data Statistik Bahasa Semantik

Instal Basis Data Statistik Bahasa Semantik dengan menelusuri Microsoft® SQL Server® 2016 Semantic Language Statistics di internet atau mengklik link berikut.

Memilih unduhan berdasarkan edisi Windows Anda:

Instal basis data bahasa:

Klik Berikutnya untuk melanjutkan jika Anda setuju dengan persyaratan dalam perjanjian lisensi:

Biarkan opsi default apa adanya, tetapi disarankan untuk memeriksa biaya disk seperti yang ditunjukkan di bawah ini:

Meskipun file hanya membutuhkan ruang sekitar 747 MB ​​(pada saat penulisan artikel ini), periksa biaya disk untuk memastikan Anda memiliki cukup ruang yang tersedia:

Setelah Anda selesai dengan pemeriksaan biaya disk, klik OK lalu klik Berikutnya .

Anda akan diminta untuk menginstal file, silakan Klik Instal (jika tertarik untuk melakukannya):

Klik Selesai setelah instalasi berhasil, yang akan terlihat seperti screenshot di bawah ini:

Temukan folder tempat Database Bahasa Semantik diinstal secara default (C:\Program Files\Microsoft Semantic Language Database):

Semuanya terlihat bagus, jadi salin file Data dan Log ke folder Data instance SQL Anda seperti yang ditunjukkan di bawah ini:

Harap diingat jalur folder DATA dapat bervariasi berdasarkan versi SQL Server Anda.

Lampirkan Basis Data Bahasa Semantik ke Instance SQL

Klik Kanan Database node di bawah Object Explorer di SSMS (SQL Server Management Studio) dan klik Lampirkan :

Tambahkan Semanticsdb.mdf dan klik Oke :

Lihat databasenya:

Daftar Basis Data Semantik

Ketik skrip berikut pada database master untuk mendaftarkan Database Statistik Bahasa Semantik:

-- Register Semantic Language Statistics Database
EXEC sp_fulltext_semantic_register_language_statistics_db @dbname = N'semanticsdb';  
GO

Periksa Status Basis Data Semantik

Periksa status Basis Data Statistik Bahasa Semantik dengan menjalankan skrip berikut terhadap basis data master:

-- Check Semantic Language Statistics Database status
SELECT * FROM sys.fulltext_semantic_language_statistics_database;  
GO

Outputnya tidak boleh kosong dan akan menjadi sebagai berikut:

Harap diingat nilai di atas mungkin berbeda pada mesin Anda, yang normal selama Anda melihat baris, maka ini berarti database statistik bahasa semantik telah berhasil diinstal pada instance SQL Anda.

Menggunakan Pencarian Semantik

Setelah Pencarian Semantik siap, kami siap menggunakannya di SQL Server.

Skenario Pencarian Semantik

Kami akan menyimpan dokumen karyawan (sampel) dalam format teks kaya di database SQL Server untuk dicari dan dibandingkan nanti menggunakan Pencarian Semantik.

Menyiapkan Database EmployeeSample

Buat database sampel dengan satu tabel dengan menjalankan skrip T-SQL terhadap database master sebagai berikut:

-- (1) Setup sample database
Create DATABASE EmployeesSample;
GO

USE EmployeesSample

-- (2) Create EmployeesForSemanticSearch table
CREATE TABLE [dbo].[EmployeesForSemanticSearch](
	[EmpID] [int] NOT NULL,
	[DocumentName] [varchar](200) NULL,
	[EmpDocument] [varbinary](max) NULL,
	[EmpDocumentType] [varchar](200) NULL,
 CONSTRAINT [PK_EmployeesForSemanticSearch_EmpID] PRIMARY KEY CLUSTERED 
(
	[EmpID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

Periksa Contoh Basis Data

Jalankan skrip berikut hanya untuk memeriksa tabel database sampel:

-- View all the employees
SELECT efss.EmpID
      ,efss.DocumentName
      ,efss.EmpDocument
      ,efss.EmpDocumentType FROM dbo.EmployeesForSemanticSearch efss

Outputnya adalah sebagai berikut:

Tambahkan File Rich Text Pertama Menggunakan dbForge Studio untuk SQL Server

Kami akan menambahkan data biner ke tabel, yang diwakili oleh file teks kaya, menggunakan dbForge Studio untuk SQL Server .

Buka database sampel EmployeesSample di dbForge Studio untuk SQL Server.

Klik Kanan EmployeeesForSemanticSearch tabel dan Klik Ambil Data:

Tambahkan data berikut ke EmployeeesForSemanticSearch tabel kecuali untuk EmpDocument kolom setelah memastikan tabel tidak dalam mode read-only:

EmpID:1

DocumentName:Employee1Document

EmpDocument:(null)

EmpDocumentType:.rtf

Masukkan dokumen format teks kaya ke dalam EmpDocument kolom dengan menambahkan teks berikut ke dalam tabel (mengklik elips dan menambahkan data):

This is a research based article and it is a new research which is in process but this is superb in the field of research.

Simpan dokumen sebagai Employee1Document.rtf di folder windows yang sesuai:

Harap terapkan perubahan untuk melihat bahwa Anda telah berhasil menyimpan file teks kaya ke dalam tabel:

Tambahkan File Rich Text Kedua Menggunakan dbForge Studio untuk SQL Server

Selanjutnya, tambahkan file teks kaya lainnya ke EmployeeesForSemanticSearch tabel dengan cara yang sama seperti di atas menggunakan informasi berikut:

EmpID:2

DocumentName:Employee2Document

EmpDocument:(null)

EmpDocumentType:.rtf

Tambahkan File Teks Kaya lainnya dengan teks berikut:

This is an article which is about facts and figures with little research in it it talks about fact and figures just facts and figures.

Simpan dokumen dalam folder yang sama sebagai berikut:

Simpan data dengan me-refresh tabel dan kemudian mengkonfirmasi perubahan yang baru saja Anda buat dengan mengklik ya:

Buat indeks unik, indeks teks lengkap, dan indeks semantik menggunakan Wizard

Kembali ke SSMS (SQL Server Management Studio), klik kanan tabel dan klik Full-Text index lalu klik Tentukan indeks Teks Lengkap… seperti yang ditunjukkan di bawah ini:

Selanjutnya, Anda harus memilih indeks unik, yang sebenarnya dipilih secara default, seperti yang kami buat EmpID kolom primary key tadi seperti gambar dibawah, oleh karena itu klik Next untuk melanjutkan:

Harap pilih EmpDocument dari Kolom yang Tersedia , Bahasa Inggris Inggris sebagai Bahasa untuk Pemecah Kata , EmpDocumentType sebagai Ketik Kolom dan periksa Penelusuran Semantik Statistik kotak di baris yang sama sebagai berikut:

Pilih opsi ubah pelacakan dengan membiarkannya menjadi pengaturan default kecuali Anda memiliki alasan kuat untuk mengubah pengaturan ini:

Buat Katalog baru sebagai EmployeeCatalog :

Klik Berikutnya lagi:

Akhirnya, setelah beberapa klik lagi (Klik Berikutnya ), tabel yang diperlukan siap untuk diquery oleh Pencarian Semantik:

Periksa apakah Pencarian Semantik diaktifkan untuk sebuah tabel

Harap periksa apakah Pencarian Semantik tetap utuh untuk tabel minat dengan menjalankan skrip berikut terhadap database sampel:

-- Check if Semantic Search is enabled for a database, table, and column
SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('EmployeesForSemanticSearch')  
GO

Outputnya harus menunjukkan bahwa itu telah diaktifkan untuk kolom ketiga saat kami mengaturnya di awal panduan:

Contoh 1:Menggunakan Skor Penelusuran Semantik untuk Menemukan Dokumen yang Relevan

Sekarang kita dapat menggunakan Pencarian Semantik untuk membandingkan dua dokumen guna menemukan kata kunci yang menarik dan skor relatifnya, yang membantu mengarahkan kita ke dokumen yang lebih relevan.

Jika kita tertarik untuk melihat dokumen di mana kata “penelitian ” lebih sering disebutkan dibandingkan dengan dokumen lain, maka kita harus memperhatikan skor untuk setiap dokumen ketika kita menjalankan skrip T-SQL berikut:

-- Using Semantic Search to find the score for the word research in both documents
SELECT TOP (100) DOC_TBL.EmpID, DOC_TBL.EmpDocumentType,KEYP_TBL.keyphrase,
KEYP_TBL.score
FROM
EmployeesForSemanticSearch AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    EmployeesForSemanticSearch,  
    EmpDocument
    ) AS KEYP_TBL  
ON DOC_TBL.EmpID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'research'  
ORDER BY KEYP_TBL.Score DESC;

Hasil query di atas adalah sebagai berikut:

Dokumen dengan skor tertinggi menunjukkan bahwa dokumen tersebut memiliki relevansi yang lebih tinggi dibandingkan dengan dokumen lain dalam hal kepentingan (penelitian) kami.

Contoh 2:Menggunakan Skor Penelusuran Semantik untuk Menemukan Dokumen yang Relevan

Kami juga dapat menemukan dokumen di mana kata "fakta" mendominasi jika dibandingkan dengan dokumen lain dengan menjalankan skrip di bawah ini:

-- Using Semantic Search to find the score for the word fact in both documents
SELECT TOP (100) DOC_TBL.EmpID, DOC_TBL.EmpDocumentType,KEYP_TBL.keyphrase,
KEYP_TBL.score
FROM
EmployeesForSemanticSearch AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    EmployeesForSemanticSearch,  
    EmpDocument
    ) AS KEYP_TBL  
ON DOC_TBL.EmpID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'fact'  
ORDER BY KEYP_TBL.Score DESC;

Hasilnya adalah sebagai berikut:

Hasil di atas mengarah pada kesimpulan bahwa dokumen yang disimpan kedua adalah satu-satunya dokumen di mana kata fakta disebutkan, tetapi jika Anda ingin memeriksa hasil ini, buka dokumen yang disimpan untuk melihatnya.

Selamat! Anda telah berhasil belajar untuk tidak hanya mengatur Pencarian Semantik di SQL Server tetapi juga memperoleh beberapa pengalaman langsung menggunakan Pencarian Semantik.

Hal yang harus dilakukan

Sekarang setelah Anda dapat menyiapkan dan menulis beberapa kueri Penelusuran Semantik dasar, cobalah yang berikut ini untuk lebih meningkatkan keterampilan Anda:

  1. Coba tambahkan dokumen lain yang menceritakan tentang penelitian lalu jalankan skrip pada contoh pertama untuk melihat dokumen mana yang merupakan dokumen paling relevan dengan membandingkan skornya.
  2. Dengan mengingat artikel ini, tambahkan dokumen lain dengan kata fakta disebutkan beberapa kali dan kemudian jalankan T-SQL pada contoh 2 artikel ini untuk melihat apakah hasilnya tetap sama atau berubah.
  3. Coba gunakan Penelusuran Semantik dengan menambahkan lebih banyak dokumen dan lebih banyak teks ke dokumen yang ada dan baru, lalu temukan dokumen yang cocok dengan kata-kata yang Anda minati.
  4. Jelajahi contoh lebih lanjut untuk mengetahui sendiri apakah Penelusuran Semantik peka huruf besar atau kecil (Petunjuk:Anda dapat sedikit mengubah contoh).

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin menggunakan SqlGeography dengan Linq to Sql?

  2. Bagaimana cara meneruskan sqlparameter ke IN ()?

  3. Cara mendapatkan *semuanya* kembali dari prosedur tersimpan menggunakan JDBC

  4. Kinerja fungsi COUNT SQL

  5. Cara Menampilkan Tanggal dalam Format Inggris di SQL Server (T-SQL)