10/10/2018, 10:31
làm sao PHP tìm kiếm trong mySQL logic mờ
cho mình hỏi làm sao để PHP tìm kiếm trong database dữ liệu theo kiểu kí tự đại diện ? chuổi phía sau bấy kỳ * tìm chính xác trong ""
Ví dụ "X?"+"hiệu honda*"
có nghĩa tìm tron data cái nào có Xe(Xa,Xế) và có hiệu honda loại cũng được ví dụ honda125 hoặc honda50CC.
Thấy PHP có ? và * để so sánh chuổi nhưng kg biết sau để tìm kiếm trong cơ sở dữ liệu tuơng đối lớn (cho ra cả tram kết quả nên phải dùng từ khóa mới tìm nhanh được )
cái này thấy người ta nói là fuzzy logic phải kg vậy?
Ví dụ "X?"+"hiệu honda*"
có nghĩa tìm tron data cái nào có Xe(Xa,Xế) và có hiệu honda loại cũng được ví dụ honda125 hoặc honda50CC.
Thấy PHP có ? và * để so sánh chuổi nhưng kg biết sau để tìm kiếm trong cơ sở dữ liệu tuơng đối lớn (cho ra cả tram kết quả nên phải dùng từ khóa mới tìm nhanh được )
cái này thấy người ta nói là fuzzy logic phải kg vậy?
Bài liên quan
Thuật toán so mẫu xấp xỉ:
- Giả sử có 2 chuỗi P và S, khi đó bạn cần phải xây dựng ra 1 đại lượng để đánh giá mức đọ tương tự (xấp xỉ) giữa 2 chuỗi nói trên. Cái này gọi là H(S,P)
+ Nếu H(S,P) = 1 thì chuỗi P chứa chuỗi S
+ Nếu H(S,P) = 0 thì chuối P ko chứa chuối S
+ Nếu 0 < H(S,P) < 1 thì đây là đại lượng cho phép đánh giá mức độ tương tự giữa 2 xâu. Rõ ràng nếu H(S,P) mà càng gần 1 thì chuỗi S càng gần chuỗi P .
Vậy vấn đề là xây dựng H(S,P) như thế nào?
- Hiện tại có nhiều thuật toán để giải quyết vấn đề trên, thuật toán mà tôi từng dùng là sử dụng otomat mờ nếu bạn cần có thể liên hệ với tôi để tham khảo các thuật toán về tìm kiếm xấp xỉ (ngày xưa tôi làm đồ án TN về cái này )
Lựa chọn ngôn ngữ
- Sử dụng ngôn ngữ PHP sẽ rất tốt nếu chuỗi tìm kiếm của bạn là tiếng không dấu, còn nếu là tiếng Việt sẽ phức tạp hơn vì khi đó bạn phải sử dụng đến các hàm trong multi-byte String.
- Nếu có thể nên chuyển qua ASP.NET và MSSQL hỗ trợ Unicode rất mạnh việc cài đặt có thể dễ dàng hơn.
Mình đang làm đồ án vè quản lý thư viện trong đó có modun tìm kiếm tên sách và nội dung. Ông thầy bắt mình phải tìm kiếm trong cơ sở dử liệu sách như vậy. ổng nói là hiện nay thư viện của trường lên đến vài ngàn cuốn nên việc làm hàm tìm kiếm như vậy rất hữu hiệu.
Mong bạn mail cho mình tại địa chỉ lazzyvn@yahoo.com.
Cho mình hỏi thăm bạn có biết cách để lấy nội dung tìm kiếm trên mạng đưa vào cơ sở dử liệu local không?. Ví dụ mình có số ISBN của một cuốn sách mình vào ISBNdb.com trong đó nó có một textflied chỉ cần nhập tên hoặc tự vào nó cho ra kết quả. Làm sao mình có thể lấy được kết quả đó.
Nếu phân tích source web thì sẻ được file HTML trong đó mỗi phần của sách như số ISBN tiêu đề tác giả sẻ nằm trong một thẻ <DIV> với id="tiêu dề"
Mình thấy người ta nói dùng API trong PHP để giải quyết nhưng giờ vẫn kg biết làm sao. Mong bạn hướng dẫn giúp
www.programmableweb.com/api/ISBNdb
http://isbndb.com/account/dev/api/
Cảm ơn bạn nhiều.
- Thứ hai về vấn đề search trên web, mình cũng chưa từng thử bao lấy kết quả từ 1 trang rồi đưa vào database của mình bao giờ. Để giải quyết vấn đề này chắc phải cài đặt 1 search engine mà cơ chế tìm trên web thì mình chưa từng thử. Vấn đề này khá rộng có thể làm luôn 1 đồ án tốt nghiệp về riêng nó cũng được.
- Thứ ba là việc tìm kiếm xấp xỉ là rất cần thiết khi ta không thể nhớ chính xác được tên cuốn sách. Theo ý tôi khi tìm kiếm bạn nên thành các lựa chọn như sau:
+ Tìm kiếm chính xác theo các trường của sách: Cái này sử dụng hàm LIKE cũng như các toán tử AND hoặc OR của CSDL vốn rất thông dụng.
+ Tìm kiếm theo từ khóa bao gồm:
1. Tìm kiếm chính xác là tìm theo đúng từ mà mình nhập vào
2. Tìm kiếm xấp xỉ
a) Tìm kiếm xấp xỉ chính xác từng từ: Ví dụ khoa học kỹ thuật máy tính tương tự với khoa học máy tính. Cái này có thể thấy rất rõ trong tìm kiếm kiểu google.
b) Tím kiếm xấp xỉ tựa ngữ nghĩa: Ví dụ xác suất có thể tương tự với xác xuất trường hợp người ta đánh sai chính tả hoặc so mẫu tương tự với xoo mẫu hoặc như bạn nói là honda125cc có thể tương tự với honda150
Khi đó đồ án của bạn sẽ đảm bảo được các kiểu tìm kiếm đạt yêu cầu đề ra.
Cuốn sách mà tôi gửi cho bạn có tên là "Ứng dụng otomat mờ trong bài toán so mẫu" trình bày khá nhiều thuật toán hay về bài toán so mẫu chính xác lẫn xấp xỉ. Hy vọng sẽ giúp bạn được nhiều để giải quyết vấn đề trên. Hiện tại tôi đang tìm lại tài liệu, có thể 1 vài ngày nữa sẽ gửi cho bạn. Nếu có vướng mắc gì về việc cài đặt các thuật toán có thể liên hệ với tôi. Chúc bạn thành công!
Vụ tìm kiếm bằng Like và % trong MySQL thì mình làm được rùi nhưng khổ cái tìm kiếm kiểu này kg hiệu quả tí xíu nào. Vì mình nhập từ tìm kiếm thì nó cứ nhắm mắt thấy cái nào có từ giống thì lôi ra. Bây giờ đang nghĩ chắc phải tạo một bảng chứa những từ thông dụng thường gặp rùi dùng php tách chuổi thấy từ nào nằm trong bảng này thì kg tìm, nhưng nếu dùng cách này thì có thể bỏ sót nhiều trường hợp là từ ghép. Mình kg biết MySQL có lệnh nào loại trừ kết quả trong một bảng kg?
Đồ án này của mình mấy cái thứ khác chỉ là phụ cái chính là vụ tìm kiếm này.
Mà mình nghĩ vấn đề này thì hầu như site nào cũng có tìm kiếm chắc kg ít thì nhiều cũng đã giải quyết vấn đề này rồi nhỉ.
- Như vậy nếu dùng PHP thì bạn phải sử dụng các hàm trong M-String để duyệt chuỗi.
- Tôi muốn nói sử dụng LIKE chỉ là 1 trong nhiều modules tìm kiếm của bạn. Càng nhiều lựa chọn tìm kiếm thì chương trình càng được đánh giá cao.
- Vấn đề tìm kiếm ở đây là so mẫu nên phải chấp nhận trường hợp người dùng nhập sai, quan trọng là tìm ra được chuỗi tương tự với từ khóa nhập vào. Ở đây tôi sẽ nói qua về cách cài đặt các thuật toán tìm kiếm theo từ khóa (tức là ko sử dụng hàm LIKE).
1. Tìm kiếm chính xác theo từ khóa: Sử dụng thuật toán so mẫu, có thể dùng KMP hoặc Turbo BM.
2. Tìm kiếm xấp xỉ
A. Tìm kiếm xấp xỉ theo từng từ chính xác: Có thể sử dụng thuật toán so sánh khúc con chung lớn nhất. Cái này có trình bày trong tài liệu của tôi tuy nhiên bạn cũng nên hỏi thầy hướng dẫn thêm các thuật toán giải quyết trường hợp này.
B. Tìm kiếm xấp xỉ tựa ngữ nghĩa: Cho kết quả mềm dẻo hơn cả trong trường hợp người dùng ko nhớ được chính xác từ khóa mà họ cần tìm. Riêng phần này được trình bày rất chi tiết trong tài liệu.
Công việc của bạn là duyệt các bản ghi của database giả sử được tập A = (a1,a2,...,ak), giả sử từ khóa tìm kiếm là K khi đó hãy tính H(a1,K) , H(a2,K) ... được 1 loạt các giá trị H rồi sắp xếp theo chiều giảm của H như vậy sẽ được kết quả giảm dần về mức độ tương tự. Cuối cùng là hiển thị các bản ghi ứng với H theo chiều giảm dần.
Còn nữa là tài liệu, ko hiểu tôi để đâu vẫn chưa tìm ra, nhưng bạn yên tâm vì nếu cần tôi sẽ xin lại từ cô giáo hướng dẫn.
aotuong@gmail.com
thanks bác trước