VBA tìm như sau bạn nhé:
Chuỗi tìm kiếm là "giải pháp in nhanh" sẽ có các trường hợp xảy ra, kiểu như toán tập hợp, nhưng loại trừ một số trường hợp không tìm kiếm.
Ví dụ chuỗi cần tìm là Text:
1. Tìm đầy đủ chuỗi là Text Like "*giải pháp in nhanh*". Hoặc InStr.
2. Tìm bỏ ký tự unicode là Text Like "gi?i ph?p in nhanh"
3. Tìm bỏ ký tự tiếng Việt tổ hợp là Text Like "gi?i ph?p in nhanh" Or Text Like "gi??i ph??p in nhanh". Vì hỗ trợ tiếng Việt có nhiều bảng mã, nên cần sử dụng ? và ?? cho 1 ký mã tiếng Việt.
4. Tìm có chứa đủ các từ "*gi*i*ph*p*in*nhanh*"
5. Tìm theo xác suất xảy ra lớn hơn, bằng cách hoán vị các từ "gi?i", "ph?p", "in", "nhanh". Sau đó hoán vị các ký tự nếu muốn có thêm các kết quả.
Các hàm và phương thức bổ trợ tìm kiếm, bao gồm: toán tử Like, tìm vị trí InStr, phương thức StrComp, biểu thức chính quy, tìm với toán tử Like trong SQL.
Với thuật toán google, họ giảm bớt khả năng xảy ra trong xác suất để giảm chi phí. Họ sẽ làm rất nhiều bước phân tích chuỗi tìm kiếm, soát lỗi các từ, hoán vị các từ hoặc ký tự. Họ truy quét dữ liệu trên internet và xử lý dữ liệu tạo ra tất cả khả năng kết quả theo xác suất trước khi cho bạn tìm kiếm, và khi bạn tìm kiếm, họ chỉ cần kiểm tra các khả năng tồn tại của chuỗi tìm kiếm, và trả kết quả nào theo tỉ lệ từ cao đến thấp.
Ví dụ: Tìm xác xuất hoán vị ký tự trong từ "nhanh": họ sẽ hoán vị tìm là: "nhanh", "anh*nh", "h*an*nh". Để giảm xác suất, họ không cho hoán vị từng ký tự sẽ gây ra tốn kém.
Nếu bạn biết về Dictionary, bạn tạo ra tất cả khả năng xảy ra cho vào Dict, thì sẽ tìm kiếm nhanh hơn, bây giờ bạn chỉ cần lấy từng mục của tập hợp tìm kiếm. Google xử lý tìm kiếm của bạn như vậy.
Bạn có thể tạo ra các khả năng xảy ra như Google nhưng bộ nhớ của máy tính là không đủ.
Cách tính tỉ lệ của kết quả tìm kiếm cũng là một thuật toán quan trọng để sắp xếp kết quả.
Để tính được tỉ lệ của mỗi kết quả, bạn phải có khả năng viết lại toán tử Like sẽ làm được, Google có nhiều thuật toán tính tỉ lệ, theo tôi thì 100% trong đó, họ có dựa vào tổng số lượng tính của CPU cho mỗi kết quả.