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

Menerapkan Pencarian Teks Lengkap di SQL Server 2016 untuk Pengguna Tingkat Lanjut

Artikel ini menceritakan tentang metode lanjutan penggunaan Pencarian Teks Lengkap untuk profesional data. Ini memungkinkan pengalaman penelusuran yang lebih baik dalam analisis basis data mereka sehari-hari.

Selain itu, pembaca akan mendapatkan pengetahuan dasar tentang Pencarian Teks Lengkap dan implementasinya. Anda akan melihat pentingnya metodologi pencarian lanjutan menggunakan Pencarian Teks Lengkap untuk mendapatkan hasil yang cepat dan andal.

Prasyarat

Pertama, mari kita lihat prasyarat karena artikel ini berfokus pada penggunaan Pencarian Teks Lengkap tingkat lanjut.

Pengetahuan T-SQL

Artikel ini mengasumsikan bahwa untuk mengimplementasikan walk-through, pembaca sudah familiar dengan menulis dan menjalankan skrip T-SQL terhadap database dengan pemahaman dasar tentang SQL Server.

Dasar-dasar Penelusuran Teks Lengkap

Artikel ini juga mengharapkan pembaca memiliki pemahaman dasar tentang Pencarian Teks Lengkap.

Silakan, lihat Menerapkan Pencarian Teks Lengkap di SQL Server 2016 untuk Pemula artikel jika Anda ingin memahami konsep dasar dan penerapan Penelusuran Teks Lengkap melalui panduan.

Instalasi Pencarian Teks Lengkap

Mari kita asumsikan bahwa Pencarian Teks Lengkap telah ditambahkan ke instance SQL Anda.

Jika Anda belum melakukannya, ikuti petunjuk di Menerapkan Pencarian Teks Lengkap di SQL Server 2016 untuk Pemula artikel untuk membantu Anda menginstal Pencarian Teks Lengkap ke instance SQL Anda.

Anda dapat memeriksa status Pencarian Teks Lengkap dengan menjalankan skrip berikut:

-- Apakah Pencarian Teks Lengkap diinstal kemudian 1 atau 0SELECT fulltextserviceproperty('IsFulltextInstalled') sebagai [Pencarian Teks Lengkap]

Contoh Basis Data SQLDevBlogV7

Sekarang buat dan isi database sampel yang disebut SQLDevBlogV7 memiliki Catatan kolom VARCHAR(MAX) Tipe. Untuk melakukannya, jalankan skrip T-SQL berikut terhadap database master:

-- Buat database sampel (SQLDevBlogV7)CREATE DATABASE SQLDevBlogV7;GOUSE SQLDevBlogV7;-- (1) Buat tabel Artikel di database sampelCREATE TABLE [dbo].[Artikel] ([ArticleId] IDENTITAS INT (1, 1) BUKAN NULL,[Category] VARCHAR (50) NULL,[Author] VARCHAR (50) NULL,[Title] VARCHAR (150) NULL,[Published] DATETIME2 (7) NULL,[Notes] VARCHAR (MAX) NULL,CONSTRAINT [PK_Artikel ] PRIMARY KEY (ArticleId));GO-- Reset data tabularTRUNCATE TABLE dbo.ArticleGO-- Tambahkan data ke tabelSET IDENTITY_INSERT [dbo].[Article] ONINSERT INTO [dbo].[Article] ([ArticleId], [Category] , [Penulis], [Judul], [Diterbitkan], [Catatan]) NILAI (1, N'Pengembangan', N'Atif', N'Pengantar Pemrograman T-SQL ', N'2017-01-01 00:00:00', N'Artikel ini tentang pemrograman T-SQL yang mencakup pernyataan yang paling umum digunakan termasuk SELECT.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title] , [Diterbitkan], [Catatan]) NILAI (2, N'Testing', N'Peter', N'Database Unit Testing Fundamentals', N'2017-01-10 00:00:00', N'Ini adalah artikel pengujian unit basis data untuk membiasakan diri dengan pengujian unit dengan bantuan contoh dan panduan.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title] , [Published], [Notes]) VALUES (3, N'Data Analysis', N'Haroon', N'Learn Basic Data Analysis with SQL Window Functions', N'2019-06-12 00:00:00', N'Artikel ini adalah tentang fungsi Window T-SQL (Transact-SQL) dan penggunaan dasarnya dalam tugas analisis data sehari-hari.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Penulis], [Judul], [Diterbitkan], [Catatan]) NILAI (4, N'Development', N'Peter', N'Common Table Expressions (CTE)', N'2017-02-10 00:00 :00', N'Ini adalah artikel yang menjelaskan cara menggunakan CTE di T-SQL untuk menulis kueri kompleks.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [ Judul], [Diterbitkan], [Catatan]) NILAI (5, N'Pengujian', N'Sadaf', N'Pengujian Manual vs. Pengujian Otomatis', N'2017-03-20 00:00:00', N 'Artikel ini didasarkan pada analisis komparatif antara pengujian manual dan pengujian otomatis. Artikel ini menggunakan tSQLt untuk memberikan contoh pengujian otomatis.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) NILAI (6 , N'Testing', N'Atif', N'Beyond Database Unit Testing', N'2017-11-10 00:00:00', N'Ada banyak hal yang harus dilakukan dalam hal pengujian unit database dan artikel ini lebih lanjut tentang beberapa metode tingkat lanjut untuk menulis dan menjalankan pengujian unit SQL menggunakan tSQLt.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published ], [Catatan]) NILAI (7, N'Testing', N'Sadaf', N'Cross Database Unit Testing', N'2017-12-20 00:00:00', N'Artikel ini mencakup skenario yang kompleks pengujian unit lintas basis data menggunakan alat pengujian pihak ketiga.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) NILAI (8 , N'Development', N'Haroon', N'Cara Menggunakan Fungsi IsNumeric T-SQL dengan Benar', N'2018-01-10 00:00:00', N'Ini tentang fungsi IsNumeric yang menentukan apakah suatu ekspresi bisa b e dievaluasi sebagai angka. Di sini, ekspresi dapat terdiri dari simbol dan operator yang dievaluasi sebagai nilai data tunggal oleh SQL Server Database Engine.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title ], [Diterbitkan], [Catatan]) NILAI (9, N'Testing', N'Sadaf', N'Scripting dan Database Pengujian untuk pemula ', N'2018-02-15 00:00:00', N' Artikel ini didasarkan pada skrip dan pengujian database SQL menggunakan alat dan teknologi modern.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Catatan]) VALUES (10, N'Development', N'Atif', N'Advanced Database Development Methods', N'2018-07-10 00:00:00', N'Artikel ini membahas tentang alat pengembangan database modern termasuk SSDT, SSMS dll.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) NILAI (11, N'Testing' , N'Sadaf', N'How to Write Unit Tests for your Database', N'2018-11-10 00:00:00', N'Artikel ini tentang menulis pengujian unit untuk database Anda menggunakan MST est.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) NILAI (12, N'Development', N'Peter ', N'Pengembangan Basis Data menggunakan Alat Modern', N'2018-12-10 00:00:00', N'Pada artikel ini dibahas skenario pengembangan basis data menggunakan Alat Data SQL Server dan SQL Server Management Studio. ')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) NILAI (13, N'DLM', N'Atif', N'Merancang, Mengembangkan, dan Menyebarkan Database', N'2019-01-01 00:00:00', N'Konsep seputar Azure DevOps dan implementasinya adalah fokus utama artikel ini.')INSERT INTO [dbo]. [Artikel] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) NILAI (14, N'DLM', N'Peter', N'How to Apply Database Lifecycle Management ', N'2019-02-10 00:00:00', N'Artikel ini tentang DLM.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title ], [Diterbitkan], [Catatan]) NILAI (15, N'Testing', N'Saqib', N'SQL Unit Testing Stored Procedures', N'2019-03-10 00:00:00', N'This artikel berbicara tentang cara menulis pengujian unit untuk suatu prosedur.')INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES ( 16, N'Reporting', N'Haroon', N'SSRS Reports Development in Simple Terms', N'2019-07-10 22:26:42', N'Artikelnya adalah didedikasikan untuk dasar-dasar pengembangan SQL Server Reporting Services (SSRS) dan ditujukan untuk pemula dan profesional yang tertarik dengan pengembangan database.')SET IDENTITY_INSERT [dbo].[Artikel] NONAKTIF

Buat Katalog Teks Lengkap

Buat Katalog Teks Lengkap menggunakan skrip di bawah ini atau menggunakan wizard penyiapan:

-- Buat Katalog Teks LengkapCREATE FULLTEXT CATALOG ArticleCatalog AS DEFAULT;GO

Menentukan Indeks Teks Lengkap pada Catatan

Setelah katalog berhasil dibuat, tentukan Indeks Teks Lengkap berdasarkan Catatan kolom sebagai berikut (atau dengan menggunakan wizard pengaturan):

-- Tentukan Indeks Teks LengkapCREATE FULLTEXT INDEX PADA dbo.Artikel(Catatan)INDEKS KUNCI PK_ArtikelWITH STOPLIST =SYSTEM;GO

Katalog Teks Lengkap dan Pemeriksaan Indeks Teks Lengkap

Perluas node terkait untuk melihat Indeks Teks Lengkap dan Katalog Teks Lengkap yang baru saja Anda buat:

Sekarang Anda siap untuk menjalankan kueri Teks Lengkap terhadap tabel yang diinginkan – dalam kasus kami, ini adalah Artikel .

Istilah Sederhana

Mencari kata atau frasa lebih mudah daripada mencari bentuk lain, sehingga disebut juga istilah sederhana.

Lihat Menerapkan Pencarian Teks Lengkap di SQL Server 2016 untuk Pemula artikel untuk menerapkan bentuk dasar kueri Teks Lengkap untuk menelusuri kata atau frasa.

Sekarang mari kita bahas beberapa potensi penelusuran lanjutan yang dilakukan menggunakan Penelusuran Teks Lengkap.

Penelusuran Teks Lengkap Lanjutan menggunakan Istilah Awalan

Istilah awalan mengacu pada kata awalan yang dimulai dengan beberapa huruf – kemudian bisa berupa apa saja yang cocok dengan pola itu. Anda dapat menganggapnya sebagai versi Pencarian Teks Lengkap dari LIKE dengan kata awalan*.

Sebuah kata atau kata-kata dalam sebuah frase juga dapat memiliki istilah awalan.

Contoh

Misalnya, mencari kata data* bisa memberi kita apa saja dimulai dengan data di kolom itu seperti data, database, database, dll.

Pencarian Artikel Terkait Pengembang menggunakan Istilah Awalan

Bayangkan, Anda ditugaskan untuk mencari artikel terkait pengembangan untuk mengaturnya dalam grup pengembangan terpisah untuk pengalaman menonton situs web yang lebih baik.

Solusinya adalah 'pencarian istilah awalan' menggunakan kueri Teks Lengkap sebagai berikut:

--Implementasi Prefix Term Full-Text Search untuk menemukan artikel terkait pengembangSELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'"dev*"')

Hasilnya juga menunjukkan artikel tentang DevOps – itu tidak terkait dengan pengembang, itu sebabnya kami menjalankan skrip lain. Ini akan menemukan semua artikel terkait dev lebih cepat menggunakan kueri Teks Lengkap, tidak termasuk DevOps sebagai berikut:

--Menerapkan Pencarian Teks Lengkap Prefix Term untuk menemukan artikel terkait dev tetapi tidak DevOpsSELECT Judul,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'"dev*"') AND NOT CONTAINS(Notes,'DevOps') 

Outputnya adalah sebagai berikut:

Perhatikan juga, penting untuk menempatkan kata pencarian dalam tanda kutip ganda seperti yang ditunjukkan pada skrip di atas. Dengan melakukan ini, kami menerapkan pencarian istilah awalan dengan benar.

Pencarian Teks Lengkap Lanjutan menggunakan Formulir Infleksional

Terkadang Anda perlu mencari bentuk infleksi dari sebuah kata yang berarti kemungkinan bentuk kata yang dapat diambil.

Contoh

Contoh sederhana adalah kata “Deploy” yang dapat memiliki bentuk infleksi berikut:

  1. Menerapkan
  2. Diterapkan
  3. Penerapan
  4. Penerapan
  5. Menerapkan

Bentuk-bentuk infleksi dari Pencarian Tulis

Mari kita lihat apa yang terjadi jika kita menjalankan kueri Teks Lengkap untuk menemukan Catatan untuk semua bentuk infleksi dari kata tulis:

-- Mencari bentuk infleksi dari penulisan kata menggunakan Full-Text SearchSELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'FORMSOF(INFLECTIONAL,write)')

Kolom Catatan dengan baris yang berisi tulis dan menulis ditampilkan di mana tulisan adalah bentuk infleksi dari tulis .

Bentuk Infleksi dari Pencarian Teknologi

Jika Anda ditugaskan untuk menemukan semua artikel yang berisi berbagai bentuk kata teknologi, maka terapkan bentuk infleksi dari pencarian kata menggunakan skrip T-SQL berikut:

-- Mencari bentuk infleksi dari teknologi kata menggunakan Full-Text SearchSELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'FORMSOF(INFLECTIONAL,technology)')

Outputnya adalah sebagai berikut:

Tidak Ada Pencarian Unit Istilah Awalan

Sekarang mari kita buat kueri Teks Lengkap yang lebih kompleks. Ini akan mencari semua artikel untuk menemukan bentuk infleksi dari kata test tetapi tanpa awalan istilah satuan (tidak termasuk pengujian unit) karena kami mencari artikel tentang pengujian, bukan tentang pengujian unit:

-- Mencari bentuk-bentuk infleksi dari tes kata tidak termasuk istilah awalan satuan menggunakan Full-Text SearchSELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'FORMSOF(INFLECTIONAL,test)') AND NOT CONTAINS(NOTES,'"unit *"')

Akibatnya, kita hanya akan melihat catatan di mana manual , otomatis, atau hanya menguji kata-kata disebutkan tidak termasuk pengujian unit artikel.

Penelusuran Teks Lengkap Lanjutan menggunakan Penelusuran Kedekatan

Mari gunakan pengalaman langsung kami dalam menggunakan pencarian kedekatan dengan menjalankan kueri Teks Lengkap.

Penelusuran/Istilah Kedekatan

Bentuk Pencarian Teks Lengkap ini memungkinkan Anda untuk mencari kata atau frasa yang dekat satu sama lain. Sangat berguna untuk menemukan catatan ketika beberapa kata atau frasa terletak sangat rapat.

Contoh

Contoh yang baik dari pencarian kedekatan adalah untuk mencari catatan di mana kata sepak bola berada di dekat kata tanah untuk mendapatkan informasi tentang lapangan sepak bola saja.

Telusuri 'pengujian dekat lanjutan' menggunakan Istilah Kedekatan

Jika Anda ingin mencari semua artikel di mana pengujian lanjutan disebutkan tanpa mengikuti urutan tertentu, pilihan terbaik Anda adalah menggunakan pencarian jarak karena Pencarian Teks Lengkap diatur pada kolom yang diinginkan.

Tulis script berikut untuk mencari kata lanjutan dekat kata pengujian dalam urutan apa pun di kolom Catatan:

-- Cari kata lanjutan di dekat pengujian kata menggunakan pencarian kedekatan (Pencarian Teks Lengkap)PILIH CATATAN DARI dbo.Artikel WHERE CONTAINS (CATATAN,'DEKAT(lanjutan,pengujian)')

Hasilnya adalah sebagai berikut:

Hasilnya menunjukkan kepada kami catatan di mana pengujian disebutkan oleh metode tingkat lanjutan dan inilah yang kami cari. Kita juga dapat menentukan jarak antara dua kata.

Menelusuri dengan jarak tidak lebih dari 2 kata

Terakhir, jalankan kueri Teks Lengkap menggunakan istilah kedekatan untuk mengetahui setiap skenario basis data di mana kata database dekat dengan kata skenario tetapi tidak lebih dari 2 kata.

-- Cari database kata dekat skenario kata tidak lebih dari 2 kata terpisah menggunakan pencarian kedekatan (Pencarian Teks Lengkap)PILIH CATATAN DARI dbo.Artikel WHERE CONTAINS (CATATAN,'DEKAT((database,skenario),2,TRUE )')

Outputnya adalah sebagai berikut:

Akibatnya, artikel di mana skenario pengembangan database disebutkan telah berhasil ditampilkan.

Dengan ini, Anda telah berhasil belajar menulis kueri Teks Lengkap lanjutan terhadap kolom mana pun. Ini membantu Anda memenuhi persyaratan pencarian yang canggih untuk siap menjalankan Pencarian Teks Lengkap dalam skenario kehidupan profesional Anda di mana pun berlaku.

Hal yang harus dilakukan

Sekarang setelah Anda dapat menulis kueri Teks Lengkap tingkat lanjut, Anda harus mencoba hal-hal berikut untuk meningkatkan keterampilan Anda:

  1. Coba cari semua artikel dengan awalan kata auto digunakan.
  2. Mengingat artikel ini, cobalah menulis skrip untuk melakukan pencarian kedekatan untuk menemukan semua baris di mana kata modern dekat dengan kata alat .
  3. Coba temukan semua bentuk infleksi dari kata tulis .

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat banyak satu ke satu

  2. Kinerja SQL Server IN vs. EXISTS

  3. Apakah ada fungsi Max di SQL Server yang mengambil dua nilai seperti Math.Max ​​di .NET?

  4. Mengotomatiskan Defragmentasi Indeks di Database MS SQL Server

  5. Cara Memigrasi Database SQL Server ke Database Azure SQL