Danh mục

Cách tìm kiếm toàn văn trong MySQL

Số trang: 10      Loại file: pdf      Dung lượng: 320.59 KB      Lượt xem: 9      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Khi dữ liệu ngày càng nhiều thì vấn đề tìm kiếm thông tin chính xác càng trở nên quan trọng. Với khối lượng dữ liệu lớn và có tổ chức phức tạp, vấn đề đặt ra là làm thế nào để tìm nhanh và đúng thông tin cần.
Nội dung trích xuất từ tài liệu:
Cách tìm kiếm toàn văn trong MySQLTìm kiếm toàn văn trong MySQLNguồn:quantrimang.comKhi dữ liệu ngày càng nhiều thì vấn đề tìm kiếm thông tin chính xác càng trở nênquan trọng. Với khối lượng dữ liệu lớn và có tổ chức phức tạp, vấn đề đặt ra làlàm thế nào để tìm nhanh và đúng thông tin cần. Người dùng không muốn tìmkiếm một từ mà lại có cả triệu câu trả lời, họ cần sự chính xác và loại bỏ các từgây nhiễu. Lúc đó, người dùng sẽ cần đến tính năng tìm kiếm toàn văn.Tìm kiếm toàn văn (TKTV) đã được hỗ trợ trong MySQL version 3.23.23. Các cộtVARCHAR và TEXT được đánh chỉ mục với FULLTEXT có thể dùng được vớicác câu lệnh SQL đặc biệt để thực hiện việc tìm kiếm toàn văn trong MySQL.Đến bản 4.1, tính năng này trở nên hoàn thiện với sự hỗ trợ đầy đủ tìm kiếmboolean.Tìm kiếm toàn văn trong MySQLTKTV là một chức năng có trong MySQL cho phép người dùng tìm kiếm cácmẩu thông tin khớp với một chuỗi trên một hay một số bảng nhất định, hơn là tìmsự so khớp dạng SELECT LIKE trên từng hàng của một trường nào đó.Một chỉ mục toàn văn trong MySQL là một chỉ mục có kiểu FULLTEXT. Các chỉmục FULLTEXT chỉ được dùng với các bảng MyISAM và có thể được tạo ra từcác cột CHAR, VARCHAR, hay TEXT vào lúc tạo bảng với CREATE TABLE haybổ sung sau với ALTER TABLE hoặc CREATE INDEX.Chỉ mục TKTV rất giống với các chỉ mục khác: nó là một danh sách các khóađược xếp theo trật tự. Các khóa này chỉ đến các bản ghi nằm trong file dữ liệu.Mỗi khóa gồm (định dạng của phiên bản 4.1):{Word -- VARCHAR. Một từ bên trong phần văn bản.Count -- LONG. Từ đó xuất hiện bao nhiều lần trong phần văn bản.}{Weight -- FLOAT. Đánh giá về tầm quan trọng của từ.Rowid -- một con trỏ chỉ đến hàng cụ thể nằm trong file dữ liệu.}Một số đặc điểm chính của tính năng TKTV trong MySQL:• Tự loại bỏ các từ có ít hơn 4 chữ cái.• Các từ có gạch ngang nằm giữa được xem là 2 từ.• Các hàng được trả lại theo thứ tự thích hợp, từ cao xuống thấp• Các từ nằm trong danh sách từ phổ thông bằng tiếng Anh cũng bị loại bỏ khỏidanh sách kết quả tìm kiếm. Danh sách từ này nằm trong file myisam/ft_static.c.Khi bạn cần lọc các từ thông dụng cho một ngôn ngữ khác, ví dụ tiếng Việt thìbạn cần chỉnh lại file này, biên dịch lại MySQL, và xây dựng lại các chỉ mục!Chuẩn bị dữ liệuChúng ta thử triển khai một ví dụ đơn giản để hình dung rõ hơn về cơ chế hoạtđộng của TKTV.Đầu tiên, chúng ta tạo ra một CSDL tên goldenkey từ cửa sổ dòng lệnh (console)của MySQL:Tiếp theo, chúng ta tạo ra một bảng dùng mệnh đề FULLTEXT của MySQL đểchỉ định những trường mà chúng ta muốn đánh chỉ mục cho việc tìm kiếm:create table Staff(pk_id int auto_increment not null,firstName varchar(20),lastName varchar(20),age int,details text,primary key(pk_id),unique id(pk_id),fulltext(firstName, lastName, details)) ENGINE=MyISAM;Sau khi thực hiện câu lệnh này, bạn được một bảng có cấu trúc như sau:Trường pk_id đầu tiên được dùng làm khóa chính. Chúng ta đã dùng mệnh đềFULLTEXT để đánh chỉ mục cho nhóm 3 trường là firstName, lastName vàdetails.Nếu đã lập bảng như trên và muốn thay đổi trường có chỉ mục, bạn dùng lệnhsau:ALTER TABLE Staff ADD FULLTEXT(field1, field2);Ở đây, bạn chú ý dòng fulltext(firstName, lastName, details). Dòng này thôngbáo cho MySQL thiết lập một chỉ mục lên các trường firstName, lastName vàdetails của bảng Staff. Các chỉ mục chỉ có thể được tạo ra trên các trường cókiểu là VARCHAR và TEXT. Khi các trường này đã có chỉ mục thì CSDL đã sẵnsàng cho việc khai thác tính năng TKTV để tìm các bản ghi phù hợp yêu cầu tìmkiếm dựa trên các giá trị có trong ba trường này.Để thử nghiệm, chúng ta bổ sung dữ liệu vào bảng mới tạo bằng các câu lệnhsau:insert into Staff values(0, Jeff, Holmes, 52, Mr. Jeff Holmes is a senior teacher inGolden Key. He likes Business, Technology and Finance. He is responsible forEnglish for Information Technology course in Golden Key.);insert into Staff values(0, Beth, Adams, 29, Mrs. Beth Adams is the Director ofStudies of Golden Key Language Center. She was born in England. She is verynice and professional.);insert into Staff values(0, Jason, Bell, 33, Mr. Jason Bell is a business assistantin Golden Key. He graduated from London Business Management School. Hismajor is Law in Business.);Chú ý là TKTV được thiết kế cho các bảng dữ liệu lớn, khi dữ liệu càng lớn thìkết quả trả về càng đáng tin cậy.Thực hiện tìm kiếmSử dụng lệnh TKTV:select firstName from Staff where match(firstName, lastName, details)against(business);Kết quả trả lại như sau:Chúng ta sẽ phân tích để thấy được sự khác biệt. Đầu tiên, xem xét phầnSELECT và FROM trong câu truy vấn:select firstName from StaffỞ đây không có gì khác biệt so với các câu SELECT bình thường khác. Nhưngsự khác biệt nằm ở phần mệnh đề WHERE tiếp sau đó:where match(firstName, lastName, details) against(business);Đây chính là chỗ phát huy sức mạnh của TKTV. Trong phần đầ ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: