2015-01-23 23 views
10

Làm thế nào để thiết lập Elasticsearch để nó trả về các kết quả được cá nhân hóa?Kết quả Tìm kiếm được Cá nhân hoá cho Elasticsearch

Ví dụ: tôi muốn kết quả được trả lại cho một người dùng cụ thể để xếp hạng cao hơn nếu họ đã nhấp vào kết quả trước đó hoặc nếu họ "gắn dấu sao" dẫn đến quá khứ. Bạn cũng có thể có tùy chọn "ẩn" để đẩy kết quả xuống thấp hơn xếp hạng. Từ những gì tôi đã nhìn thấy với elasticsearch cho đến nay, có vẻ như khó khăn để trả lại thứ hạng khác nhau cho người dùng dựa trên dữ liệu động của chính người dùng đó.

Giải pháp sẽ phải mở rộng đến hàng nghìn người dùng đang thực hiện một tá lượt tìm kiếm mỗi ngày. Lý tưởng nhất, tôi muốn xếp hạng thay đổi theo thời gian thực, nhưng điều đó không quan trọng.

+1

nếu bạn đã giải quyết vấn đề này, bạn có thể chia sẻ một số thông tin không? Tôi đang cố gắng thực hiện một chức năng rất giống nhau, nhưng câu trả lời dưới đây không có đủ thông tin cho tôi. – ivant

Trả lời

7

Elasticsearch cung cấp nhiều tùy chọn ghi điểm khác nhau, nhưng sau đó để đạt được những gì bạn đã nói, bạn sẽ cần thực hiện một số nhiệm vụ bổ sung.

Function score query và tài liệu terms lookup terms filter sẽ là công cụ của chúng ta về sự lựa chọn của chúng tôi

Đầu tiên tạo một tài liệu cho mỗi người dùng, nói với các liên kết hoặc liên kết ID ông đến thăm và các liên kết anh đã thích. Điều này nên được đặt riêng biệt dưới dạng chỉ mục riêng biệt. Và điều này nên được duy trì bởi người dùng, vì anh ta nên cập nhật và duy trì bản ghi này từ phía máy khách.

Bây giờ khi người dùng truy cập chỉ mục dữ liệu, hãy thực hiện truy vấn điểm chức năng với chức năng bộ lọc trỏ đến trường này.

Trong phương pháp này, khi bộ lọc được lưu trong bộ nhớ cache, bạn cũng sẽ có được hiệu suất tốt.

+1

Vineeth, điều này rất giống với những gì tôi cần. Nhưng elasticsearch-fu của tôi vẫn chưa tốt, vậy bạn có thể đăng hoặc chỉ cho tôi một số ví dụ không? – ivant

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