Tôi đã chơi một chút với một công cụ tìm kiếm đơn giản, khá đơn giản và giờ đây tôi đang có một số mã phân loại phù hợp.Tối ưu hóa một thuật toán tìm kiếm đơn giản
Đó là không phải là rất xinh đẹp, nhưng tôi không phải là rất tốt khi nói đến các thuật toán thông minh, vì vậy tôi đã hy vọng tôi có thể nhận được một số lời khuyên :)
Về cơ bản, tôi muốn mỗi kết quả tìm kiếm để có được chấm điểm dựa trên bao nhiêu từ khớp với tiêu chí tìm kiếm. 3 điểm cho mỗi từ chính xác và một điểm cho trận đấu phần
Ví dụ, nếu tôi tìm kiếm "mùa đông tuyết", đây sẽ là kết quả:
- mùa đôngtuyết => 6 điểm
- mùa đôngtuyết ing => 4 điểm
- mùa đông đất tuyết => 4 điểm
- mùa đông mặt trời => 3 điểm
- mùa đông đất tuyết ing => 2 điểm
Dưới đây là các mã:
String[] resultWords = result.split(" ");
String[] searchWords = searchStr.split(" ");
int score = 0;
for (String resultWord : resultWords) {
for (String searchWord : searchWords) {
if (resultWord.equalsIgnoreCase(searchWord))
score += 3;
else if (resultWord.toLowerCase().contains(searchWord.toLowerCase()))
score++;
}
}
Vấn đề bạn đang tìm cách giải quyết chính xác là gì? nó có quá chậm không? sử dụng lượng bộ nhớ lớn? bạn đã nghĩ gì về tối ưu hóa? – Yuval
Tốc độ chủ yếu. Hóa ra nó có thể là cơ sở dữ liệu mà tôi đang thắt cổ chai. – Ace