Tôi đọc bài báo của Doug Cutting; "Space optimizations for total ranking".Thuật toán của Lucene
Kể từ khi nó được viết một thời gian dài trước đây, tôi tự hỏi những gì các thuật toán lucene sử dụng (liên quan đến bài viết danh sách traversal và tính toán điểm số, xếp hạng).
Cụ thể, tổng thuật toán xếp hạng được mô tả có liên quan đến toàn bộ danh sách bài đăng cho mỗi cụm từ truy vấn, trong trường hợp các thuật ngữ truy vấn rất phổ biến như "chó vàng", một trong hai cụm từ có thể có các bài đăng rất dài trong trường hợp tìm kiếm trên web. Tất cả họ có thực sự vượt qua Lucene/Solr hiện tại không? Hoặc có bất kỳ chẩn đoán nào để cắt ngắn danh sách được sử dụng không?
Trong trường hợp chỉ có kết quả k được trả về đầu tiên, tôi có thể hiểu rằng phân phối danh sách bài đăng trên nhiều máy và sau đó kết hợp đầu k từ mỗi máy sẽ hoạt động, nhưng nếu chúng tôi được yêu cầu trả lại "thứ 100 trang kết quả ", tức là kết quả xếp hạng từ 990-1000, sau đó mỗi phân vùng sẽ vẫn phải tìm ra 1000 đầu, do đó, việc phân vùng sẽ không giúp được gì nhiều.
Nhìn chung, có bất kỳ tài liệu chi tiết cập nhật nào về các thuật toán nội bộ được Lucene sử dụng không?
Ngoài ra, bất kỳ ai biết rõ (tất nhiên chi tiết là bí mật, nhưng tôi đoán ý tưởng chính nên là đủ phổ biến trong những ngày này) cách google xếp hạng nhanh trong trường hợp truy vấn nhiều lần với AND? (nếu các bài đăng của họ được sắp xếp theo thứ tự PageRank, thì có thể hiểu rằng một truy vấn đơn lẻ sẽ nhanh chóng trả về top-k, nhưng nếu đó là nhiều cụm từ, họ sẽ phải duyệt qua toàn bộ danh sách để tìm bộ chèn, vì danh sách không được sắp xếp theo docId, như trong trường hợp giấy Lucene) –
Tôi không biết điều này thực sự hiệu quả như thế nào, nhưng nếu bạn muốn chấm dứt truy vấn sớm, bạn nên đặt thứ tự (id docs) khớp với mức độ liên quan (pagerank trong trường hợp), ít nhất là trên cơ sở mỗi phân đoạn. Điều này sẽ giải quyết vấn đề của bạn cho các truy vấn nhiều lần. – jpountz