2014-04-25 16 views
6

Mongodb là một db nosql và bất kỳ truy vấn nào có thể được chạy trên nó ngoại trừ tìm kiếm văn bản đầy đủ vì nó làm giảm hiệu suất tổng thể. Solr là một công cụ tìm kiếm để tìm kiếm. Khi chúng ta tích hợp hai cái này lại với nhau thì chúng ta không có cùng một dữ liệu trong cả hai hệ thống? Vì vậy, nếu chúng ta đã lưu trữ dữ liệu thì tại sao chúng ta không lưu trữ nó trực tiếp trong solr và lucene. Btw tôi không chắc chắn khi nào solr chỉ lưu trữ chỉ mục hoặc cùng với dữ liệu.Động lực để tích hợp mongodb với solr

Trả lời

4

ok bây giờ tôi biết lý do vì chỉ các trường chúng tôi đã cấu hình trong Solr sẽ được lưu trữ trong lucene chúng tôi không lưu trữ toàn bộ dữ liệu trong lucene cũng. Chúng tôi chỉ lưu trữ các trường tiêu chí tìm kiếm trong lucene. Họ giống như hoàn thành lẫn nhau. Để giải thích với một ví dụ cho phép nói rằng tôi có một tài liệu có 40 trường và 5 trong số đó là một tài liệu khác. Hãy tưởng tượng tôi muốn tạo một truy vấn nói rằng tôi muốn 3 trường cụ thể trong tài liệu bằng với một giá trị nhất định và trong một tài liệu con của bảng cha tôi có một tiêu chí khác cho một trường cụ thể trong một khoảng thời gian và 1 trường khác bao gồm một số từ. Đối với điều đó thay vì sau đó có thêm chỉ mục trong mongodb, tôi có thể lưu trữ chỉ các trường trong solr bằng cách cấu hình solr đúng cách.

1

Tôi không phải là chuyên gia MongoDB, nhưng đánh giá từ this blog post, MongoDB tìm kiếm văn bản đầy đủ là khá cơ bản, giống như trong cơ sở dữ liệu quan hệ. Điều này có thể là đủ cho bạn hoặc có thể không. Tìm kiếm features do Lucene/Solr cung cấp ở phía trước.

Lưu ý rằng bạn cũng có thể Lucene/Solr làm công cụ lưu trữ chính. Lucene cung cấp ACID cũng như durability after crashes.

+0

cảm ơn vì sự khôn ngoan của bạn nhưng câu hỏi của tôi là tại sao mọi người tích hợp chúng lại với nhau, nghĩa là tại sao bạn lưu trữ cùng một dữ liệu trong các hệ thống khác nhau. Có những thứ như chỉ số cửa hàng trong solr và lưu trữ dữ liệu trong mongodb. Khi chúng ta sử dụng solr, chúng ta có sử dụng mặc định lucene không? –

+1

Đơn giản, họ có thể muốn sử dụng Mongo làm nguồn dữ liệu chính và Lucene/Solr làm giao diện tìm kiếm vì tính năng tìm kiếm cơ bản trong Mongo không đủ. – mindas

+0

ok mọi thứ nhận được một chút rõ ràng. Sau đó, tại sao họ lưu trữ dữ liệu này trong cả hai hệ thống tại sao họ chỉ không cụm solr. Khi sử dụng mongodb làm nguồn dữ liệu chính những gì mongo mua cho bạn? Xin lỗi tôi biết tôi đang yêu cầu quá nhiều nhưng tôi chỉ tự hỏi. –

2

Tôi đã có một số kinh nghiệm với tích hợp Solr và MongoDB.

Tôi đã sử dụng Mongo làm kho dữ liệu. Và Solr hoạt động như công cụ tìm kiếm (máy chủ). Bởi vì, Solr đã cho tôi tìm kiếm văn bản đầy đủ linh hoạt hơn.

Herehere bạn có thể xem cách lập chỉ mục cơ sở dữ liệu mongo bằng Solr.

+0

tôi đã thiết lập cấu hình của mình đang hoạt động nhưng vấn đề là tại sao sẽ cần mongo cho những gì nó mua cho bạn –

+0

Trong trường hợp của tôi, Mongo là một kho dữ liệu thông thường (cơ sở dữ liệu). Nhưng tôi đã có nhu cầu tìm kiếm văn bản đầy đủ ф theo tài liệu. Solr geve hiệu suất và tính linh hoạt cao hơn cho tìm kiếm. Xem [so sánh] (http://stackoverflow.com/questions/3215029/nosql-mongodb-vs-lucene-or-solr-as-your-database) – jmen7070

2

Tôi có thể đến muộn bên nhưng đây là lý do tại sao tôi bắt đầu sử dụng solr với mongo.
Lý do là, tôi lưu trữ dữ liệu lồng nhau trong mongodb do đó các truy vấn quá chậm ngay cả sau khi lập chỉ mục theo hướng dẫn từ mongodb. Do đó bây giờ chúng tôi bắt đầu sử dụng solr cho tìm kiếm, mongodb để lưu trữ dữ liệu và một bộ sưu tập khác trong solr cho một số tìm kiếm dựa trên xếp hạng.

Chúng tôi không lưu trữ toàn bộ dữ liệu trong solr để tìm kiếm chỉ lọc trường và ID và chúng tôi tận dụng redis làm bộ nhớ cache để lấy dữ liệu theo ID.

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