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:
Để 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
* 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,






0 comments:
Post a Comment