2015-05-28 22 views
6

Tôi chạy truy vấn đối với lõi SOLR và hạn chế kết quả bằng cách sử dụng bộ lọc như fq: {!frange l=0.7 }query($q). Tôi biết rằng điểm số SOLR không có ý nghĩa tuyệt đối, nhưng 0.7 (chỉ là một ví dụ) được tính dựa trên đầu vào của người dùng và một số phỏng đoán, hoạt động khá tốt.Nhận điểm SOLR ổn định

Vấn đề là như sau: Tôi cập nhật một vài tài liệu trong lõi của mình. Các trường được cập nhật chỉ là các trường dữ liệu meta, không liên quan đến tìm kiếm ở trên ở trên. Nhưng vì bản cập nhật nội bộ là xóa + chèn, IDF và thay đổi số lượng tài liệu. Và do đó, làm các điểm tính toán. Đột nhiên, truy vấn trả về các kết quả khác nhau.

Khi Yonik giải thích cho tôi here, hành vi này là do thiết kế. Vì vậy, câu hỏi của tôi là: cách đơn giản nhất và cách tối thiểu để giữ cho điểm số và kết quả đầu ra của truy vấn của tôi ổn định là gì?

Chạy tối ưu hóa sau mỗi lần cam kết sẽ giải quyết được vấn đề, nhưng tôi tự hỏi có điều gì đơn giản hơn và ít tốn kém hơn không.

Trả lời

1

Bạn thực sự cần chạy tối ưu hóa. Khi bạn tối ưu hóa chỉ mục, hãy làm sạch tất cả các tài liệu chưa được chỉ ra và làm cho truy vấn ổn định. Điều này xảy ra vì việc xây dựng thông tin siêu dữ liệu này là tốn kém để được thực hiện tất cả thời gian một tài liệu được cập nhật. Bởi vì solr này chỉ làm điều đó trên tối ưu hóa. Có một cách hay để xem liệu chỉ mục của bạn có ổn định hay ít hơn ... Khi bạn truy cập vào API Solr, bạn có thể thấy thông tin Num DocsMax Doc. Nếu Max Doc lớn hơn Num Docs, đường nối đó có một số sản phẩm cũ ảnh hưởng đến tính toán liên quan của bạn. Tối ưu hóa chỉ số hai con số này được thực hiện một lần nữa. Nếu những con số này bằng nhau, bạn có thể tin tưởng IDF được tính toán chính xác.

Các vấn đề liên quan