2009-03-21 38 views
23

Các cách khác nhau để tối ưu hóa hiệu suất Lucene là gì?Tối ưu hóa hiệu suất Lucene

Tôi có nên sử dụng API lưu trong bộ nhớ cache để lưu trữ truy vấn tìm kiếm lucene để tôi tiết kiệm chi phí cho việc tạo lại truy vấn không?

Trả lời

4

Cheat. Sử dụng RAMDirectory để tải toàn bộ chỉ mục vào ram. Sau đó, mọi thứ đều nhanh chóng. :)

3

Tôi đã nhận thấy câu trả lời hay nhất cho câu hỏi về hiệu suất là lập hồ sơ cho câu hỏi đó. Nguyên tắc rất tuyệt, nhưng có quá nhiều biến có thể tác động đến hiệu suất như kích thước của tập dữ liệu, loại truy vấn bạn đang thực hiện, kiểu dữ liệu, v.v.

Nhận Netbeans profiler hoặc một cái gì đó tương tự và dùng thử các cách khác nhau . Sử dụng các bài báo liên quan đến Mitch, nhưng hãy chắc chắn rằng bạn thực sự kiểm tra những gì giúp và những gì (thường đáng ngạc nhiên) đau.

Cũng có một cơ hội tốt mà bất kỳ khác biệt hiệu suất nào bạn có thể nhận được từ Lucene sẽ nhỏ hơn so với cải thiện hiệu suất trong của bạn. Profiler sẽ chỉ ra rằng là tốt.

11

lời khuyên nhanh:

  • Giữ kích thước của chỉ số nhỏ. Loại bỏ các định mức, các vectơ kỳ hạn khi không cần thiết. Đặt Cờ cửa hàng cho một trường chỉ khi trường đó là phải.
  • Rõ ràng, nhưng lỗi lặp lại. Chỉ tạo một phiên bản Searcher và tái sử dụng.
  • Giữ chỉ mục trên đĩa nhanh. RAM, nếu bạn hoang tưởng.
4

Rất nhiều liên kết chết tại đây.

Những (hơi chính thức) các nguồn lực là nơi tôi sẽ bắt đầu:

http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

http://wiki.apache.org/lucene-java/ImproveSearchingSpeed

+0

Tại thời điểm này, Lucene.NET thực sự chậm phía sau Lucene, vì vậy tài liệu Lucene ngày càng ít có liên quan. Có vẻ như quan liêu đã đẩy lùi hầu hết những người đóng góp Lucene.NET –

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