Trong bài viết thương yêu cầu có tìm kiếm từ khóa và mình cần hiển thị cho người dùng biết các từ khóa có liên quan đến bài viết. Bài viết này mình sẽ giới thiệu một cách để thực hiện.
Tuy chưa thực sự tối ưu vì trong thuật toán có dùng con trỏ để tìm kiếm. Nếu có thời gian chịu khó phân tích lại thì sẽ tối ưu thuật toán hơn.
Ví dụ bạn có bài viết được mô tả như sau:
Bạn sẽ thấy bên dưới phần diễn giải của bài viết có các từ khóa liên quan.
Để làm được điều đó bạn cần tạo một bảng (TB_TuKhoa) để lưu trữ những từ khóa (Gọi nôm na là kho từ khóa).
CREATE TABLE [dbo].[TB_TuKhoa](
[idKey] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
[TuKhoa] [nvarchar](250) NOT NULL,
[GhiChu] [nvarchar](250) NULL,
)
Ví dụ dữ liệu của bạn như sau:
Giờ chúng ta sẽ viết thuật toán để lấy ra các từ khóa.
Bạn viết 1 hảm để trả về kết quả là từ khóa của bài viết như sau
* Input NoiDung bài viết (Nvarchar)
* Output: Từ khóa liên quan
--Create by hungbv@hmweb.com.vn
CREATE FUNCTION GetKeyword(
@NoiDung nvarchar(4000)
)
RETURNS NVarChar(4000)
AS
BEGIN
DECLARE @KetQua nvarchar(4000) SET @KetQua='Từ khóa: '
-- Khai báo 1 bảng tạm
DECLARE @_Table TABLE (Noidung nvarchar(4000) null)
INSERT INTO @_Table(Noidung) VALUES (@NoiDung)
DECLARE @Count int
--Dùng con trỏ (vòng lặp) để tìm kiếm từ khóa
DECLARE @TuKhoa Nvarchar(250)
DECLARE TuKhoa_Cursor CURSOR FOR
SELECT TuKhoa FROM TB_TuKhoa order by newid()
OPEN TuKhoa_Cursor
FETCH NEXT FROM TuKhoa_Cursor INTO @TuKhoa
WHILE @@FETCH_STATUS = 0
BEGIN
-- Nếu tìm thấy trong nội dung có từ khóa thì cộng thêm kết quả
SELECT @Count =Count(*) FROM @_Table
WHERE Noidung LIKE N'%'+@TuKhoa+'%'
IF @Count>0
BEGIN
SET @KetQua=@KetQua+@TuKhoa+', '
END
FETCH NEXT FROM TuKhoa_Cursor INTO @TuKhoa
END
CLOSE TuKhoa_Cursor
DEALLOCATE TuKhoa_Cursor
RETURN @KetQua
END
Để sử dụng hàm trên và tránh việc mỗi lần view bài viết bạn lại yêu cầu thực hiện hàm đó thì trong bảng bài viết (TB_BaiViet) của bạn tạo thêm trường Từ khóa
Dữ liệu trường này = dbo.GetKeyword(NoiDung)
Ví dụ:
SELECT dbo.GetKeyword(N'Bài viết này giới thiệu một số thủ thuật
và lời khuyên liên quan đến những thắc mắc mà người dùng văn phòng
thường gặp phải trong quá trình sử dụng Excel, Word.')
Sẽ cho kết quả là: Từ khóa: WORD, Thủ thuật, EXCEL, lời khuyên, thắc mắc, người dùng , người dùng văn phòng , sử dụng Excel,