Percolate queries: Manticore Search vs Luwak

इस लेख में हम परीक्षण करते हैं कि पर्कोलेट क्वेरीज मैन्टिकोर सर्च और लुवाक में कैसे प्रदर्शन करती हैं।

परिचय

हाल ही में हमने मेन्टिकोर सर्च और एलास्टिकसर्च में पर्कोलेट क्वेरीज के प्रदर्शन का परीक्षण किया । आज हम लुवाक पर ध्यान दे रहे हैं, जो लुसिन खोज पुस्तकालय पर आधारित एक स्टोर किए गए क्वेरी इंजन है।

जब हमने पर्कोलेट क्वेरीज विकसित कीं, तो हमने मौजूदा इंजनों पर ध्यान दिया जो इस सुविधा को लागू करते हैं। फ्लैक्स (लुवाक के लेखक) द्वारा दिए गए बेंचमार्क यहां ने हमें लुवाक के खिलाफ मैन्टिकोर का परीक्षण करने के लिए प्रेरित किया क्योंकि यह एलास्टिकसर्च से अधिक प्रदर्शन कर रहा था। पहले परीक्षणों में, हमने पाया कि लुवाक हमारी कार्यान्वयन की तुलना में तेज़ था, जिसने हमें कुछ स्थानों की पहचान करने में मदद की जो अनुकूलित की जा सकती थीं और मैन्टिकोर सर्च में पर्कोलेट क्वेरीज के प्रदर्शन में सुधार (कुछ मामलों में बहुत अधिक) किया जा सकता था।

सेटअप

बेंचमार्क का संचालन स्टानिस्लाव क्लिनोव ने किया, जो मैन्टिकोर सर्च के सीनियर कोर डेवलपर्स में से एक हैं और साथ ही स्पिनेक्स सर्च के लंबे समय तक डेवलपर भी हैं।

हमने लुवाक-सरवर शाखा ली और HTTP सर्वर और लुवाक का नवीनतम संस्करण प्राप्त करने के लिए लुवाक-1.5.0 शाखा का विलय किया।

पिछले परीक्षणों में, हमने एलास्टिकसर्च के साथ केवल 4 शब्दों की क्वेरीज (2 MUST और 2 NOT) का उपयोग किया था। अब हमने लुवाक द्वारा किए गए बेंचमार्क की स्थितियों को फिर से बनाने का प्रयास किया (एलास्टिकसर्च के खिलाफ)। हमने 3 प्रकार की स्टोर की गई क्वेरीज की जांच की:

  • 7 शब्दों की क्वेरीज, जिनमें 5 MUST और 2 NOT हैं

  • 120 शब्दों की क्वेरीज, जिनमें 100 MUST और 20 NOT हैं

  • 20 वाइल्डकार्ड शब्दों की क्वेरीज (हर एक 4 चार वर्ण वाले सुफिक्स से बनी होती है)

हमारा लक्ष्य एकल और बैच किए गए दस्तावेज़ों का उपयोग करके उलटा खोज करना था। पर्कोलेट क्वेरीज या तो एकल खोज कार्यकर्ता द्वारा या कई कार्यकर्ताओं द्वारा (सामूहिक मोड में परीक्षण करने के लिए) निष्पादित की जाती हैं।

पर्कोलेट्स HTTP एपीआई का उपयोग करके निष्पादित होते हैं, इस कारण हमने HTTP सर्वर वाले लुवाक शाखा को नवीनतम स्थिर कोड के साथ मिलाया।

परीक्षण

लुवाक थोड़ा बेहतर प्रदर्शन करता है जब हम बैचिंग का उपयोग नहीं कर रहे होते हैं, लेकिन जैसे ही हम दस्तावेज़ों को बैच करना शुरू करते हैं, मैन्टिकोर आगे बढ़ जाता है।

5x MUST + 2x NOT 100K स्टोर किए गए क्वेरीज पर

जैसे ही हम दस्तावेज़ों को बैच करना शुरू करते हैं, लुवाक पर औसत विलंबता भी तेजी से बढ़ती है।

इंजनों पर दबाव डालने के लिए, हमने कई समांतर खोज कार्यकर्ताओं को जोड़ा जो इंजनों पर धावा बोलते हैं। लुवाक 100 दस्तावेज़ों के बैच में कुछ बेहतर प्रदर्शन करता है, क्योंकि मैन्टिकोर धीमा होता है, लेकिन यह अभी भी लगभग 2x धीमा है।

औसत विलंबताओं का पैटर्न समान है: दस्तावेज़ों के बैच होने पर लुवाक की विलंबताएँ अधिक हैं।

100x MUST + 20x NOT 100K स्टोर किए गए क्वेरीज पर

यह मामला लुवाक पर कड़ी मार डालता है।

20 वाइल्डकार्ड 4 चार वर्ण लंबाई पर 5k स्टोर किए गए क्वेरीज

जब हम परीक्षण कर रहे थे, तो हमने मैन्टिकोर में स्टोर की गई क्वेरीज के साथ वाइल्डकार्ड और बैच किए गए दस्तावेजों का उपयोग करते समय एक प्रदर्शन समस्या (जो अभी तक ठीक नहीं हुई) का पता लगाया। जैसे-जैसे हम बैच में कई दस्तावेज़ जोड़ते हैं, थ्रूपुट गिरता है। लुवाक, पिछले परीक्षणों के विपरीत, गैर-बैच किए गए मोड में खराब प्रदर्शन करता है, लेकिन जैसे ही हम दस्तावेज़ बैच करते हैं, यह मैन्टिकोर को थोड़ा पीछे छोड़ता है।

इंजनों पर समांतर कार्यकर्ताओं के साथ धावा बोलने पर, कोई स्पष्ट विजेता नहीं है।

औसत लैटेंसी में, लुवाक कुछ मामलों में तब बेहतर है जब खोज श्रमिकों की संख्या कम होती है, लेकिन अंतर उल्लेखनीय नहीं हैं।

निष्कर्ष

संचित प्रश्नों के लिए जिनमें कई गैर-वाइल्डकार्ड शर्तें हों, केवल एक मामला जब लुवाक मंटिकोर के बराबर है वह है जब यह बिना बैच मोड में हो। जैसे ही हम दस्तावेजों को बैच करते हैं, मंटिकोर लुवाक को थ्रूपुट में बहुत अधिक बेहतर प्रदर्शन करता है और औसत लैटेंसी सामान्यतः लुवाक के आधे पर होती है।

लुवाक के लिए सबसे खराब स्थिति तब होती है जब संग्रहीत प्रश्नों में सौ से अधिक गैर-वाइल्डकार्ड शर्तें होती हैं। यहां तक कि बिना बैच मोड में, मंटिकोर तीन गुना तेज है, जब कि 10 बैच किए गए दस्तावेजों के मामले में लगभग 20 गुना तेज हो जाता है। लुवाक के पास भी अत्यधिक उच्च लैटेंसी होती है जब दस्तावेजों को मिलान के लिए बैच किया जाता है।

वाइल्डकार्ड शर्तों के साथ संग्रहीत प्रश्नों के लिए कोई स्पष्ट विजेता नहीं है। कुछ मामलों में लुवाक थोड़ा बेहतर प्रदर्शन करता है। हमारे पक्ष में एक स्वीकार्य बग है (ब्लूम अस्वीकृति फ़िल्टर अपेक्षित रूप से काम नहीं करते) जो प्रदर्शन को प्रभावित करता है। लुवाक के लिए सबसे अच्छा मामला 20 डॉक्स बैच में एकल खोज श्रमिक चलने पर था, जब यह लगभग 2 गुना तेज था, लेकिन अन्य मामलों के लिए, लाभ बहुत छोटे हैं या मंटिकोर थोड़ी आगे है।

मैंटीकोर सर्च इंस्टॉल करें

मैंटीकोर सर्च इंस्टॉल करें