Dựa vào số liệu offline + số liệu online, không dựa vào việc gõ thử vài câu rồi thấy "có vẻ ổn hơn".
Offline: dựng bộ đánh giá gồm query kèm document đúng, rồi chạy _rank_eval:
POST /products/_rank_eval
{
"requests": [{
"id": "laptop_query",
"request": { "query": { "match": { "name": "laptop gaming" } } },
"ratings": [{ "_index": "products", "_id": "1", "rating": 3 }]
}],
"metric": { "dcg": { "k": 10 } }
}Các metric hay dùng: precision@k, recall@k, MRR, nDCG. Bộ đánh giá lấy từ log query thật cộng với đánh giá tay của người hiểu nghiệp vụ.
Online: đo CTR, tỉ lệ chuyển đổi, tỉ lệ query không có kết quả, và tỉ lệ reformulate (user gõ lại ngay sau khi search). Cách đúng để so hai cấu hình ranking là A/B test.
Một tín hiệu rất hữu ích mà nhiều team không log: query trả về 0 kết quả. Danh sách đó thường chỉ thẳng ra thiếu synonym, thiếu xử lý dấu, hoặc thiếu hàng thật sự.
Nguyên tắc: chưa có cách đo thì đừng chỉnh ranking — mọi thay đổi sẽ chỉ là ý kiến cá nhân.