2015-01-23 13 views
10

के लिए व्यक्तिगत खोज परिणाम Elasticsearch स्थापित करने के बारे में कोई कैसे होगा ताकि यह व्यक्तिगत परिणाम लौटा सके?Elasticsearch

उदाहरण के लिए, मैं चाहता हूं कि परिणाम किसी विशेष उपयोगकर्ता को वापस रैंक करें, यदि वे पहले परिणाम पर क्लिक करते हैं, या यदि वे अतीत में "तारांकित" होते हैं। आपके पास "छुपाएं" विकल्प भी हो सकता है जो रैंकिंग के नीचे परिणामों को आगे बढ़ाता है। मैंने अब तक लोचदार खोज के साथ जो देखा है, उस उपयोगकर्ता के अपने गतिशील डेटा के आधार पर उपयोगकर्ताओं को विभिन्न रैंकिंग वापस करना मुश्किल लगता है।

समाधान को प्रति दिन दर्जन या उससे अधिक खोज करने वाले हजारों उपयोगकर्ताओं को स्केल करना होगा। आदर्श रूप से, मैं रैंकिंग को वास्तविक समय में बदलना चाहता हूं, लेकिन यह महत्वपूर्ण नहीं है।

+1

यदि आपने इसे हल किया है, तो क्या आप कुछ जानकारी साझा कर सकते हैं? मैं एक बहुत ही समान कार्यक्षमता को लागू करने की कोशिश कर रहा हूं, लेकिन नीचे दिए गए उत्तर में मेरे लिए पर्याप्त जानकारी नहीं है। – ivant

उत्तर

7

Elasticsearch स्कोरिंग विकल्पों की एक विस्तृत विविधता प्रदान करता है, लेकिन फिर आपने जो कुछ बताया है उसे प्राप्त करने के लिए आपको कुछ अतिरिक्त कार्य करने की आवश्यकता होगी।

Function score query और दस्तावेज़ terms lookup terms filter हमारी पसंद

पहले की हमारी उपकरण हो सकता है, प्रति उपयोगकर्ता एक दस्तावेज़ बनाने के लिंक या लिंक आईडी वह दौरा किया और लिंक वह पसंद आया है कह रही। इसे अलग इंडेक्स के रूप में अलग से रखा जाना चाहिए। और इसे उपयोगकर्ता द्वारा बनाए रखा जाना चाहिए, क्योंकि उसे क्लाइंट साइड से इस रिकॉर्ड को अद्यतन और बनाए रखना चाहिए।

अब जब कोई उपयोगकर्ता डेटा इंडेक्स हिट करता है, तो इस फ़ील्ड को इंगित करने वाले फ़िल्टर फ़ंक्शन के साथ फ़ंक्शन स्कोर क्वेरी करें।

इस दृष्टिकोण में, फ़िल्टर को कैश किया गया है, इसलिए आपको सभ्य प्रदर्शन भी मिलना चाहिए।

+1

विनीथ, यह मेरी ज़रूरत के समान ही है। लेकिन मेरा लोचदार-फू अभी तक अच्छा नहीं है, तो क्या आप मुझे कुछ उदाहरणों पर पोस्ट या पॉइंट कर सकते हैं? – ivant