Bài viết này nói về tìm kiếm toàn văn và cách triển khai nó cho những người mới bắt đầu.
Ngoài ra, độc giả sẽ biết những điều quan trọng để tìm kiếm toàn văn hoạt động bình thường.
Bài viết này cũng nêu bật tầm quan trọng của việc sử dụng Tìm kiếm toàn văn bản để khớp các mẫu văn bản và đáp ứng các loại yêu cầu tương tự.
Giới thiệu về Tìm kiếm Toàn văn
Chúng ta hãy hiểu Tìm kiếm toàn văn bản với sự trợ giúp của các định nghĩa.
Định nghĩa đơn giản
Tìm kiếm toàn văn bản được sử dụng để tìm kiếm dữ liệu dựa trên ký tự một cách tối ưu cho các câu trả lời nhanh.
Định nghĩa Microsoft
Tìm kiếm toàn văn bản trong SQL Server và Cơ sở dữ liệu SQL Azure (phiên bản đám mây của cơ sở dữ liệu SQL) cho phép người dùng và ứng dụng chạy truy vấn toàn văn bản dựa trên dữ liệu dựa trên ký tự trong bảng SQL Server.
Truy vấn toàn văn bản là gì
Truy vấn toàn văn bản là một loại truy vấn đặc biệt được viết và chạy trên các cột có dữ liệu dạng văn bản để tìm các mẫu dữ liệu. Đối với vấn đề này, Tìm kiếm toàn văn bản nên được bật cho các cột đó.
Khả năng tương thích
Tìm kiếm toàn văn bản tương thích với các phiên bản SQL Server sau:
- SQL Server 2005 trở lên
- Cơ sở dữ liệu Azure SQL
Phiên bản Hiện đại của Tìm kiếm Toàn Văn bản
Trong các phiên bản SQL Server gần đây, chẳng hạn như SQL 2016, Tìm kiếm toàn văn bản có sẵn để cài đặt cùng với Tìm kiếm ngữ nghĩa.
Tìm kiếm Toàn văn - SQL Server Tùy chọn
Hãy nhớ rằng Tìm kiếm Toàn văn không được cài đặt theo mặc định khi bạn cài đặt SQL Server. Bạn phải cài đặt nó theo tùy chọn bằng cách thêm nhiều tính năng hơn vào phiên bản SQL hiện tại của mình bằng cách sử dụng thiết lập ban đầu bạn đã sử dụng để cài đặt SQL Server của mình.
Tìm kiếm Toàn văn - Cơ sở dữ liệu Mặc định
Tất cả các cơ sở dữ liệu SQL đã sẵn sàng để sử dụng với Tìm kiếm Toàn văn bản theo mặc định. Không cần cài đặt thêm ngoại trừ các yêu cầu trước khi sử dụng Tìm kiếm toàn văn bản trong cơ sở dữ liệu SQL.
Phân biệt chữ hoa chữ thường
Theo tài liệu của Microsoft, Tìm kiếm toàn văn bản không phân biệt chữ hoa chữ thường nên các từ “bảng điều khiển”, “Bảng điều khiển” và “bảng điều khiển” đều được coi như nhau.
Thiết lập Tìm kiếm Toàn văn
Như đã đề cập, bạn cần thêm Tìm kiếm toàn văn bản làm tính năng cho cài đặt SQL Server hiện có của mình bằng cách sử dụng cùng một tệp thiết lập bạn đã sử dụng để cài đặt SQL Server.
Chạy trình cài đặt SQL
Bắt đầu bằng cách chạy trình cài đặt SQL Server. Nó cung cấp cho bạn một tùy chọn để gắn kết dưới dạng ổ đĩa nếu bạn muốn chạy trực tiếp từ trình cài đặt hơn là lưu nó.
Chạy tệp thiết lập
Nhấp vào tệp Setup.exe để chạy thiết lập SQL Server:
Thêm làm tính năng
Ngay sau khi bạn chạy tệp thiết lập, một số kiểm tra ban đầu sẽ được thực hiện. Sau khi các kiểm tra này được vượt qua, bạn cần chọn “thêm các tính năng vào tùy chọn cài đặt hiện có” dưới thanh điều hướng Cài đặt (phần):
Chọn Máy chủ Hiện tại của bạn
Tiếp theo, chọn máy chủ hiện tại / tiềm năng của bạn mà bạn sẽ cài đặt Tìm kiếm toàn văn bản. Trong trường hợp của chúng tôi, đó là SQL 2016:
Chọn Tính năng phiên bản sẽ được thêm vào
Tiếp theo, chọn Trích xuất Toàn văn và Ngữ nghĩa cho Tìm kiếm tính năng sẽ được thêm vào (nếu bạn thêm tính năng này cho các phiên bản SQL cũ hơn, phần trích xuất ngữ nghĩa có thể không được hiển thị):
Xin lưu ý, vì tôi đã thêm tính năng này trước phần hướng dẫn, nên nó xuất hiện màu xám trên ảnh chụp màn hình. Nhưng đối với bất kỳ ai lần đầu tiên thêm nó, nó sẽ hoạt động và có thể được cài đặt, mất một chút thời gian.
Kiểm tra Trạng thái Cài đặt Tìm kiếm Toàn Văn bản
Sau khi cài đặt Tìm kiếm toàn văn bản, bạn có thể kiểm tra bằng cách chạy tập lệnh T-SQL sau trên cơ sở dữ liệu chính:
-- Is Full-Text Search installed then 1 or 0 SELECT fulltextserviceproperty('IsFulltextInstalled') as [Full-Text Search]
Khi bạn đã cài đặt thành công Tìm kiếm toàn văn bản, bạn sẽ thấy “1” nghĩa là tập lệnh đang chạy:
Tìm kiếm Từ và Cụm từ bằng Tìm kiếm Toàn văn
Bây giờ, chúng ta sẽ thực hiện một số thao tác tìm kiếm cơ bản cho các từ và cụm từ bằng Tìm kiếm toàn văn bản.
Thiết lập Cơ sở dữ liệu Mẫu
Để hiểu cách sử dụng cơ bản của Tìm kiếm toàn văn bản, hãy thiết lập một cơ sở dữ liệu mẫu có tên là SQLDevBlogV6 như sau:
-- Create sample database (SQLDevBlogV6) CREATE DATABASE SQLDevBlogV6; GO USE SQLDevBlogV6; -- (1) Create Article table in the sample database CREATE TABLE [dbo].[Article] ( [ArticleId] INT IDENTITY (1, 1) NOT NULL, [Category] VARCHAR (50) NULL, [Author] VARCHAR (50) NULL, [Title] VARCHAR (150) NULL, [Published] DATETIME2 (7) NULL, [Notes] VARCHAR (400) NULL, CONSTRAINT [PK_Article] PRIMARY KEY (ArticleId) ); GO -- (2) Populate the table with data SET IDENTITY_INSERT [dbo].[Article] ON INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (1, N'Development', N'Atif', N'Introduction to T-SQL Programming ', N'2017-01-01 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (2, N'Testing', N'Peter', N'Database Unit Testing Fundamentals', N'2017-01-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (3, N'DLM', N'Sadaf', N'Database Lifecycle Management for beginners', N'2017-01-20 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (4, N'Development', N'Peter', N'Common Table Expressions (CTE)', N'2017-02-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (5, N'Testing', N'Sadaf', N'Manual Testing vs. Automated Testing', N'2017-03-20 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (6, N'Testing', N'Atif', N'Beyond Database Unit Testing', N'2017-11-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (7, N'Testing', N'Sadaf', N'Cross Database Unit Testing', N'2017-12-20 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (8, N'Development', N'Peter', N'SQLCMD - A Handy Utility for Developers', N'2018-01-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (9, N'Testing', N'Sadaf', N'Scripting and Testing Database for beginners ', N'2018-02-15 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (10, N'Development', N'Atif', N'Advanced Database Development Methods', N'2018-07-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (11, N'Testing', N'Sadaf', N'How to Write Unit Tests for your Database', N'2018-11-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (12, N'Development', N'Peter', N'Database Development using Modern Tools', N'2018-12-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (13, N'DLM', N'Atif', N'Designing, Developing and Deploying Database', N'2019-01-01 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (14, N'DLM', N'Peter', N'How to Apply Database Lifecycle Management', N'2019-02-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (15, N'Testing', N'Saqib', N'SQL Unit Testing Stored Procedures', N'2019-03-10 00:00:00', NULL) SET IDENTITY_INSERT [dbo].[Article] OFF
Cụm từ và Từ ngữ
Hãy xem các cụm từ và từ khác trong ngữ cảnh Tìm kiếm toàn văn bản. Điều này sẽ giúp bạn có ý tưởng tốt hơn về những gì bạn đang tìm kiếm thông qua Tìm kiếm toàn văn bản.
Tuyên bố “ Giới thiệu về T-SQL ”Là một cụm từ và“ giới thiệu ”Và“ T-SQL ”Là những từ quan tâm.
Các bước triển khai tìm kiếm toàn văn bản trong SQL Server
Tìm kiếm Toàn văn được triển khai theo những cách sau:
- Tạo Danh mục toàn văn bản (để lưu trữ các chỉ mục toàn văn bản).
- Xác định Chỉ mục Toàn văn trên Bảng hoặc Dạng xem được Lập chỉ mục.
- Chạy Truy vấn tìm kiếm toàn văn bản bằng CONTAINS hoặc FREETEXT để tìm các từ và cụm từ.
Tạo Danh mục Toàn văn
Vì vậy, cơ sở dữ liệu mẫu (SQLDevBlogV6) đã được tạo và điền thành công. Tạo Danh mục toàn văn bản là bước đầu tiên để triển khai Tìm kiếm toàn văn bản.
Đi tới Trình khám phá đối tượng trong SQL Server, mở rộng Cơ sở dữ liệu và sau đó Nhấp vào SQLDevBlogV6.
Nhấp vào Bộ nhớ , sau đó Nhấp vào Danh mục toàn văn, và sau đó Nhấp vào Danh mục Toàn văn Mới:
Nhập tên danh mục là DevBlogCatalog, Nhấp vào OK:
Danh mục Toàn văn mới được tạo trông như sau:
Xác định Chỉ mục Toàn văn trên Bảng
Nhấp chuột phải vào Các bài báo bảng, Nhấp vào Chỉ mục toàn văn bản, và sau đó Nhấp vào Xác định chỉ mục Toàn văn như hình dưới đây:
Thao tác này sẽ kích hoạt Trình hướng dẫn lập chỉ mục toàn văn bản. Nhấp vào Tiếp theo , sau đó nhấp vào Tiếp theo một lần nữa sau khi đảm bảo rằng khóa chính của bảng đã được trình hướng dẫn chọn trước.
Trong bước tiếp theo, hãy chọn Tiêu đề cột cho các truy vấn Toàn văn. Đây là cột mà chúng ta sẽ chạy các truy vấn Toàn văn:
Tiếp theo, chọn tùy chọn mặc định để tự động hóa theo dõi thay đổi bằng cách chọn tùy chọn Tự động tùy chọn (trừ khi bạn muốn chọn một số tùy chọn khác) như hình dưới đây:
Trong bước tiếp theo, vui lòng chọn Danh mục toàn văn bản (DevBlogCatalog) để liên kết với Chỉ mục toàn văn mà bạn đã xác định trước đó trong hướng dẫn này. Sau đó Nhấp vào Tiếp theo sau khi chọn các tùy chọn mặc định như hình dưới đây:
Nhấp vào Tiếp theo và bỏ qua bước tùy chọn, sau đó nhấp vào Hoàn tất để biết rằng Chỉ mục toàn văn đã được tạo thành công.
Giờ đây, chúng tôi có thể chạy các truy vấn Toàn văn đối với Tiêu đề cột của bảng Bài báo nhờ bật Tìm kiếm toàn văn bản.
Tìm kiếm Kiểm tra từ bằng Truy vấn Toàn văn
Giờ đây, chúng tôi có thể nhanh chóng tìm kiếm các từ bằng cách sử dụng CONTAINS từ khóa (vị từ) bằng cách viết tập lệnh T-SQL sau:
-- Search for the Word Testing using Full-Text Query SELECT * FROM dbo.Article WHERE CONTAINS(Title,'Testing')
Các kết quả để tìm kiếm trong Thử nghiệm từ trong Tiêu đề như sau:
Xin lưu ý rằng bạn có thể nhận được kết quả tương tự bằng cách sử dụng toán tử Like mà không cần Tìm kiếm toàn văn bản. Sự khác biệt là khi bạn đang chạy truy vấn này với hàng triệu triệu hàng và đây là lúc toán tử LIKE gặp khó khăn. Trong khi đó, CONTAINS nhanh hơn nhiều theo các chuyên gia.
Tìm kiếm Cụm từ dành cho người mới bắt đầu sử dụng Truy vấn Toàn văn
Hãy tìm tất cả các bài viết có cụm từ “dành cho người mới bắt đầu” được sử dụng trong tiêu đề. Điều này sẽ giúp người mới bắt đầu nhanh chóng bắt đầu.
Lần này chúng tôi đang sử dụng FREETEXT từ khóa (Vị ngữ). Nó sẽ cung cấp cho chúng ta tất cả các bài viết dành cho người mới bắt đầu bằng cách sử dụng tập lệnh T-SQL sau:
-- Search for Phrase: for beginners using Full-Text Query SELECT * FROM dbo.Article WHERE FREETEXT(Title,'for beginners')
Kết quả như sau:
Xin chúc mừng, bạn đã học thành công những kiến thức cơ bản về Tìm kiếm toàn văn bản. Bạn cũng có kinh nghiệm thực tế về việc thiết lập và chạy các truy vấn tìm kiếm Toàn văn cho các từ và cụm từ.
Giữ liên lạc vì bài viết sắp tới mô tả cách sử dụng Tìm kiếm toàn văn bản nâng cao. Nó thường hữu ích trong các tình huống phân tích cơ sở dữ liệu.
Việc cần làm
Bây giờ bạn có thể thiết lập Tìm kiếm toàn văn bản và chạy các truy vấn toàn văn bản, vui lòng thử những điều sau để cải thiện kỹ năng của bạn:
- Thử điền Ghi chú vào cơ sở dữ liệu bằng cách cung cấp thêm thông tin về các bài báo. Tiếp theo là xác định Danh mục toàn văn bản và chạy các truy vấn toàn văn bản để tìm kiếm các từ và cụm từ bằng cách sử dụng các từ khóa CONTAINS và FREETEXT.
- Ngoài ra, hãy tìm kiếm Đơn vị từ để tìm hiểu tất cả các bài báo có đề cập đến từ này. Nó có thể được lưu trữ trong cột dưới dạng Unit Testing, Unit Test hoặc Unit Test.
- Tham khảo cơ sở dữ liệu mẫu trong bài viết này. Thiết lập Tìm kiếm Toàn văn cho bảng Sản phẩm, xác định chỉ mục Toàn văn trên cột tên, và thêm nhiều bản ghi nhất có thể. Tìm kiếm các từ và cụm từ bạn chọn để tìm (tên) sản phẩm mong muốn của họ.