Tìm văn bản trong cơ sở dữ liệu mysql
Cách sử dụng tìm kiếm toàn văn và từ khóa khớp để tìm một chuỗi trong mọi bảng trong cơ sở dữ liệu MySQL Show
2 năm trước • 7 phút đọc Mục lục Mục lụcTìm kiếm toàn văn bản trong MySQL là gì?Bạn có thể có siêu năng lực giống như Google để tìm các từ và cụm từ trên toàn bộ cơ sở dữ liệu của mình. Công cụ tìm kiếm sử dụng Full-Text Search để tìm kết quả trong cơ sở dữ liệu. Những cơ sở dữ liệu này thường chứa rất nhiều dữ liệu dạng văn bản. Ví dụ: các trang web tin tức chứa nhiều bài báo và có thể muốn tìm một cụm từ cụ thể. Hoặc người dùng có thể gửi yêu cầu hỗ trợ với cùng một từ chỉ ra một vấn đề phổ biến Tìm kiếm toàn văn không cố gắng tìm từng cụm từ được viết bởi người dùng. Nó đang cố đoán xem người dùng nghĩ gì, để tìm hiểu ý nghĩa sâu xa hơn, có thể nói như vậy Mục tiêu của nó là tìm các kết quả gần đúng về nghĩa và nhanh chóng đưa ra chúng. Do đó, kết quả sẽ hữu ích hơn nhiều cho người dùng, vì nó sẽ phù hợp hơn Thông thường, một dịch vụ tìm kiếm có hai thành phần. Công cụ tìm kiếm và lập chỉ mục
Tìm kiếm toàn văn bản trong MySQL hoạt động như thế nào?Để sử dụng full-text search trong MySQL bạn cần sử dụng full-text indexes và hàm MATCH(). Chỉ mục toàn văn là FULLTEXT Mysql hỗ trợ các chỉ mục toàn văn trên các bảng MyISAM. Hỗ trợ InnoDB đã được thêm vào kể từ phiên bản 5. 6. 4 Khi bạn tạo bảng bằng lệnh CREATE TABLE, bạn có thể tạo các chỉ mục này trên cột VARCHAR và TEXT. Bạn cũng có thể thêm các chỉ mục sau này bằng lệnh ALTER TABLE hoặc CREATE INDEX Tuy nhiên, bạn không nên thêm chỉ mục FULLTEXT ngay khi tạo bảng. Một lượng lớn dữ liệu được tải vào bảng nhanh hơn nhiều nếu không thêm chỉ mục. Đó là lý do tại sao các chỉ mục thường được thêm vào sau Hàm MATCH() thực hiện tìm kiếm ngôn ngữ. Nó so sánh một chuỗi với nội dung văn bản. Theo nội dung, ý tôi là sự kết hợp của một hoặc nhiều cột có trong chỉ mục FULLTEXT Chuỗi tìm kiếm được chỉ định với một đối số trong biểu thức CHỐNG LẠI (). Tìm kiếm không phân biệt chữ hoa chữ thường. Lệnh MATCH() trả về giá trị liên quan cho mỗi hàng trong một cột. Giá trị liên quan là mức độ giống nhau của chuỗi tìm kiếm và văn bản trong chuỗi
Khi bạn sử dụng lệnh MATCH() trong mệnh đề WHERE, các hàng của cột kết quả sẽ tự động được sắp xếp theo mức độ liên quan Giá trị liên quan là một số dấu phẩy động không âm.
Full-Text Search không phải là một công cụ phức tạp, nó gần như đơn giản như toán tử LIKE. Nhưng riêng toán tử LIKE không hữu ích bằng FTS. Tôi sẽ nói về điều này trong tiểu mục tiếp theo Toán tử LIKE vs Tìm kiếm toàn văn bản trong MySQLMột từ đồng nghĩa với toán tử LIKE là độ chính xác, đối với đầu vào toàn văn bản, nó là tính linh hoạt. Do đó, bạn có thể dễ dàng hiểu được sự phức tạp trong công việc của từng phương pháp. Và bây giờ để biết thêm chi tiết Nhà điều hành THÍCHĐộ chính xác của toán tử LIKE cao có nghĩa là hiển thị ít kết quả sai hơn. Tỷ lệ thu hồi cao có nghĩa là ít kết quả liên quan bị bỏ qua hơn. Điều này có nghĩa là LIKE chính xác 100% khi tìm kiếm cụm từ Tuy nhiên, câu lệnh LIKE trong MySQL có thể không hữu ích trong một số trường hợp. Nếu cột được lập chỉ mục, có thể thực hiện đối sánh với các khóa chỉ mục, nhưng kém hiệu quả hơn nhiều so với hầu hết các tìm kiếm chỉ mục. Toán tử LIKE tốt hơn khi không có nhiều bản ghi và thực tế không thể sử dụng nó trong các bảng có hàng trăm nghìn hàng vì tìm kiếm được thực hiện trên tất cả các bản ghi và điều này làm giảm hiệu suất Tìm kiếm toàn vănHầu hết các triển khai tìm kiếm toàn văn đều sử dụng chỉ mục, trong đó các khóa là các thuật ngữ riêng lẻ và các giá trị liên quan là các tập bản ghi chứa thuật ngữ đó. Các tính năng tìm kiếm toàn văn bao gồm
Toán tử THÍCH vs TRẬN ĐẤU CHỐNG LẠIChúng ta hãy xem nhanh so sánh. Hình thái học có nghĩa là tìm kiếm dựa trên gốc của từ bằng kiến thức ngữ pháp và ngôn ngữ cụ thể Tìm kiếm với toán tử LIKELợi ích Nhược điểm Độ phức tạp thấp hơn O(n^2) Không hỗ trợ hình thái học Sắp xếp kết quả Không có bộ điều chỉnh Được sử dụng trên mọi loại trườngTìm kiếm trong tất cả các dòngTìm kiếm với Full-text SearchLợi ích Nhược điểmHỗ trợ cho Hình thái họcThiếu khả năng sắp xếpKết quả được sắp xếp theo mức độ liên quanVARCHAR và TEXT chỉ với các chỉ mụcCông cụ sửa đổi kiểu của GoogleQuy trình sử dụng nhiều tài nguyênDừng từHỗ trợ bản địa chỉ dành cho các bảng MyISAMKhả năng tùy chỉnhThêm dữ liệu mất nhiều thời gian hơn với FULLTEXTHạn chế tìm kiếm toàn vănKhi sử dụng tìm kiếm toàn văn, cũng cần nhớ rằng hàm MATCH() có những hạn chế của nó
Ví dụ tìm kiếm toàn văn trong MySQLTrong ví dụ này, bạn sẽ thấy mức độ liên quan của kết quả tìm kiếm toàn văn Đầu tiên, hãy tạo một lược đồ
Lược đồ của chúng tôi sẽ là một cơ sở dữ liệu về các sản phẩm mỹ phẩm. Đó là, bây giờ chúng tôi đang tạo một bảng danh mục
Và bây giờ chúng ta tạo một bảng sản phẩm
Bây giờ chúng tôi có các bảng, chúng tôi điền chúng bắt đầu với bảng danh mục
Và cũng điền vào bảng sản phẩm
Cái bàn chúng tôi có Xuất các trường từ một bảng bằng từ “dầu gội đầu” cho hai bảng được nối gián tiếp
Bạn có thể nhận thấy rằng tìm kiếm đã tìm thấy từ này trong phần mô tả sản phẩm và tên sản phẩm (dòng 1) và ở dòng 2, từ này chỉ xuất hiện trong tên sản phẩm chứ không có trong phần mô tả Sự kết luậnĐây là một đoạn thông tin ngắn về tìm kiếm toàn văn trong MySQL. Hiểu biết cơ bản về tính hữu ích của Tìm kiếm Toàn văn sẽ đến từ việc sử dụng tìm kiếm này trong thực tế. Bây giờ bạn đã biết rằng toán tử LIKE không phải là cách duy nhất để tìm kiếm văn bản trong cơ sở dữ liệu MySQL. Tìm kiếm toàn văn bản trong MySQL cung cấp cho bạn siêu năng lực tìm kiếm như Google phải tìm bất kỳ chuỗi hoặc từ nào trên tất cả các bảng trong cơ sở dữ liệu của bạn dự án mãTham gia Bản tin Arctype Tham gia cùng hơn 800 nhà phát triển và nhận lời khuyên hữu ích từ các chuyên gia trong ngành về lập trình mỗi tuần Làm cách nào để tìm kiếm văn bản trong MySQL?Định dạng truy vấn cơ bản của tìm kiếm toàn văn trong MySQL phải tương tự như sau. CHỌN * TỪ bảng WHERE MATCH(column) AGAINST(“chuỗi” TRONG CHẾ ĐỘ NGÔN NGỮ TỰ NHIÊN); Khi MATCH() được sử dụng cùng với mệnh đề WHERE, .
Làm cách nào để tìm từ trong chuỗi trong MySQL?Hàm LOCATE() của MySQL
. Nếu không tìm thấy chuỗi con trong chuỗi gốc, hàm này trả về 0. Hàm này thực hiện tìm kiếm không phân biệt chữ hoa chữ thường. Ghi chú. Hàm này tương đương với hàm POSITION().
Làm cách nào để tìm kiếm dữ liệu từ cơ sở dữ liệu trong MySQL?Tìm dữ liệu qua kết nối MySQL bằng cách sử dụng tính năng tìm kiếm văn bản trên bất kỳ số lượng bảng và lược đồ nào. Từ cây lược đồ, chọn bảng, lược đồ hoặc cả hai để tìm kiếm, sau đó nhấp chuột phải vào các mục được đánh dấu và nhấp vào Tìm kiếm Bảng dữ liệu từ trình đơn ngữ cảnh .
Cách kích hoạt đầy đủTìm kiếm toàn văn bản MySQL được bật bằng cách thêm chỉ mục FULLTEXT vào các trường có thể tìm kiếm của bạn . Sau đó, bạn sử dụng MATCH. CHỐNG LẠI với một trong ba chế độ tìm kiếm để nhận kết quả của bạn. Truy vấn ngôn ngữ tự nhiên trả về điểm số liên quan đến tìm kiếm mà bạn có thể sử dụng để xếp hạng kết quả của mình. |