Tìm kiếm gần đúng trong sql

*



You watching: Tìm kiếm gần đúng trong sql

(MySQL&PHP)Rắc rối sẽ diễn ra Khi gồm rất nhiều biết tin với bao gồm ta cũng lừng khừng đúng đắn nên tìm cái gì. Sau phía trên mình đã trình làng tới bí quyết bạn 2 cách để hoàn toàn có thể tra cứu kiếm gần đúng trong những Squốc lộ.Cách 1: MATCH, AGAINSTĐây là một trong dạng hình tra cứu kiếm Full text nhưng mà nếu như chúng ta vào google search một phạt với trường đoản cú khóa:"kiếm tìm kiếm toàn văn"vẫn ra một đống bài bác tương tự nhau hoàn toàn, không hiểu biết nhiều đánh cắp từ bỏ web làm sao ra nhưng mà cuối cùng bài bác làm sao tương tự như bài nào.Mấy bài nó nó không hề ít và khôn cùng góc cạnh, tới mức đọc không hiểu biết nỗi. Mình chỉ gọi sơ sơ tới mức đủ xài.ví dụ như ta bao gồm một bảng rất đơn giản dễ dàng thương hiệu là topic bao gồm 2 cột : id_topic và subject, ý tưởng phát minh để kiếm tìm kiếm tựa bài bác dễ dàng chỉ với một câu lệnh: Mã nguồn:SELECT * FROM topic WHERE $subject=subjectVới biến đổi $subject là các thứ người tiêu dùng nhập vào(tất nhiên là đả qua xử lý nhỏng loại trừ các ký kết tự đặc biệt...)Vấn đề phát sinh ra cùng với cậu lệnh SQL bên trên là nếu người dùng nhtràn vào chuỗi :"con gà con"thì các chỉ đông đảo sản phẩm cất chuỗi đúng chuẩn như vậy mới được trả về. Vấn đề này sẽ không tương thích mang đến việc tiềm kiếm.Giải quyết vụ việc trên với MATCH, AGAINSTVấn đề sẽ được xử lý tương đối là đơn giản cùng với MATCH, AGAINST, câu lệnh lúc này ta dùng dễ dàng chỉ là:Mã nguồn:SELECT *FROM topicWHERE MATCH(subject) AGAINST("$subject")Viết mất đi khỏi đến các bạn dễ dàng nhìn kết cấu thôi, chđọng chả có gì quan trọng đặc biệt cả.

See more: Cách Đổi Tên Ổ Đĩa Trong Win 7, Xp, Rename Tên Ổ Đĩa Trong Windows7



See more: Windows X86 Là Gì ? Cách Xem Máy Bạn Đang Chạy 32 Cách Xem Máy Bạn Đang Chạy 32

quý giá bên trong MATCH() là tên cột đựng ngôn từ nên tra cứu, còn cực hiếm cất bên phía trong AGAINST() chính là đầy đủ gì đề xuất tra cứu.Mọi việc lúc sau ta cđọng khiến cho hệ DataBase từ bỏ mầng.Chú ý:Để hoàn toàn có thể cần sử dụng MATCH, AGAINST, cột nào chứa biết tin đề xuất search đề nghị được knhì báo chỉ mục FULL TEXT. lấy một ví dụ bảng topic bên trên phải được tạo nên như thế này:Mã nguồn:CREATE TABLE IF NOT EXISTS topic (id_topic int(10) unsigned NOT NULL,subject tinytext NOT NULL,PRIMARY KEY (id_topic),FULLTEXT KEY subject (subject))ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";Sử dụng LIKENhiều bạn có tay nghề sẽ tức thì nhanh chóng tạm dừng làm việc công đoạn này vì chưng thực ra chỉ khi LIKE đang không thể sử dụng được fan ta bắt đầu sử dụng tới MATCH, AGAINS. Nhưng dưới đây mình tất cả một thuật giải của sự việc này giành riêng cho các bạn:B 1: Xử lý chuỗi nhtràn vào, cho nó thành chữ hay hết, vứt mấy đồ vật gi không phải chữ cái ra, rất tốt là quăng quật luôn vết.B 2: vươn lên là chuỗi đó thành mảng, đa số phần tử của mảng là một trong những trường đoản cú vào chuỗi.B 3: Chọn ngẩu nhiên vài ba trăm chiếc tất cả chứa một phần tử (lựa chọn đại hay phương diện định là bộ phận đầu tiên). Đây là bước nhất gồm sử dụng LIKEMã nguồn:SELECT * FROM topic WHERE subject LIKE"%array<1>%"B 4: từ vài trăm mẫu sẽ chọn ra, đem dòng tiêu đề (câu chữ chđọng đề xuất so sánh), cách xử trí giống như nlỗi chuỗi nhập vào( đừng chuyễn nó thành mảng nhé).B 5: cùng với các pần tử còn sót lại của mảng, tìm coi nó có mở ra phía bên trong mấy trăm chuỗi trả lời đả piông xã ra không(chạy 2 vòng lặp kép), nếu có thì gán một biến đổi mảng kết phù hợp với key là id của chiếc sẽ pick ra, mỗi lần như thế thì quý hiếm tăng thêm 1B 6: tuỳ theo ý muốn trả ra kết lấy ra 3 thành phần của mảng có giá trị cao nhất, chuyển đổi kháo thành cực hiếm, quý giá thành khoá, tiếp đến chạy câu lệnh truy nã vấn kéo ra ban bố còn sót lại của topic gồm Id khớp ứng, còn nếu links nội dung bài viết dạng index?id=$id thì thừa khoẻ.Với thuật toán thù bên trên phía trên có lẽ rằng vẫn chưa phải là thuật toán thù tối ưu tốt nhất bởi vì nó vẫn không xác minh được keywords cần có, cũng như có thể là rất lâu ví như tìm tìm những trường đoản cú trong tất cả các hàng, cũng giống như lúc lựa chọn ngẩu nhiên hoàn toàn có thể ta đả bỏ lỡ những sản phẩm chứa thông tin đúng chuẩn rộng.

Chuyên mục: Chia sẻ