Tôi khuyên bạn nên tạo chỉ mục theo cách mà tất cả các thực thể của bạn có nhiều hoặc ít các trường cơ bản giống nhau: title, content, url, uuid, entity_type, entity_sourcename
v.v. Nếu mỗi thực thể của bạn có một nhóm chỉ mục tương ứng duy nhất, bạn sẽ gặp khó khăn trong việc xây dựng truy vấn để tìm kiếm tất cả các thực thể cùng lúc và chế độ xem kết quả của bạn có thể trở thành một mớ hỗn độn lớn. Nếu bạn cần một số trường cụ thể cho một thực thể cụ thể, hãy thêm nó và thực hiện logic đặc biệt cho thực thể này dựa trên entity_type của nó.
Tôi đang nói từ kinh nghiệm: chúng tôi đang quản lý một chỉ mục với hơn 10 thực thể khác nhau và cách tiếp cận này hoạt động như sự quyến rũ.
P.S. Một vài lời khuyên đơn giản khác.
- Đảm bảo tài liệu Lucene chứa tất cả dữ liệu cần thiết để tạo kết quả và hiển thị kết quả cho người dùng (để bạn không cần phải chuyển đến cơ sở dữ liệu để tạo kết quả). Truy vấn Lucene thường nhanh hơn nhiều so với truy vấn cơ sở dữ liệu.
- Nếu bạn hoàn toàn cần sử dụng cơ sở dữ liệu để xây dựng bộ kết quả của mình (ví dụ: để áp dụng quyền), sử dụng truy vấn Lucene trước để thu hẹp kết quả, truy vấn cơ sở dữ liệu thứ hai để lọc chúng.
- Đừng ngại thêm trường tùy chỉnh vào một số tài liệu của bạn nếu bạn cần: hãy nghĩ về tài liệu Lucene làm kho dữ liệu khóa-giá trị.