2010-06-14 37 views

Trả lời

1

Bạn có thể muốn có 3 chỉ mục được gọi là Sản phẩm, Số lần xem sản phẩm và Bài viết. Mỗi chỉ mục có thể có lược đồ riêng của nó. Sự khác biệt giữa Lucene và phương pháp tiếp cận db quan hệ là một hàng trong một db, khoảng chuyển thành một tài liệu trong Lucene. Lưu ý: mỗi tài liệu có thể có lược đồ riêng của nó (đó là một khác biệt từ một db quan hệ).

1

Với Lucene/Solr, mỗi tài liệu không cần đặt giá trị cho từng trường. Trong cùng một lược đồ, bạn có thể có một tập hợp các trường cho thực thể A và một nhóm trường khác cho thực thể B và chỉ điền vào trường thích hợp tùy thuộc vào thực thể.

Với Solr, bạn cũng có tùy chọn để chuyển sang đa lõi. Mỗi lõi có lược đồ riêng của nó. Bạn có thể xác định một lõi cho mỗi thực thể.

5

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.

  1. Đả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.
  2. 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.
  3. Đừ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ị.
2

Đa lõi là phương pháp được sử dụng cẩn thận. Với một lược đồ đơn giản giống như của bạn, đó là một cách tốt hơn để làm như các lệnh giới thiệu buru. Điều đó có nghĩa là tìm các trường chung giữa các thực thể khác nhau của bạn và sau đó các trường sẽ chỉ được sử dụng bởi một hoặc nhiều trường. Sau đó, bạn có thể thêm trường "loại" hoặc "type_id" sẽ cho biết liệu pháp nhân của bạn là sản phẩm, đánh giá sản phẩm ...

Làm như vậy sẽ cho phép bạn có chỉ mục duy nhất và xử lý truy vấn nhanh chóng.

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